From 12e24f682bd4cd232f09eb17e6a81e3b98956cb8 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 6 Oct 2016 16:01:48 +0300 Subject: [PATCH 01/36] Added OWNER --- Owner.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Owner.md diff --git a/Owner.md b/Owner.md new file mode 100644 index 00000000..f0d27f60 --- /dev/null +++ b/Owner.md @@ -0,0 +1 @@ +Nagaiko Ivan From e1af9034cb53c41e3adc895da486ad518e738245 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 6 Oct 2016 16:04:07 +0300 Subject: [PATCH 02/36] Document + Parser --- src/main/java/track/lessons/lesson2/Document.java | 13 +++++++++++-- src/main/java/track/lessons/lesson2/Parser.java | 13 +++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/track/lessons/lesson2/Document.java b/src/main/java/track/lessons/lesson2/Document.java index fa2b2915..69271e1b 100644 --- a/src/main/java/track/lessons/lesson2/Document.java +++ b/src/main/java/track/lessons/lesson2/Document.java @@ -5,16 +5,25 @@ */ public class Document { String[] tokens; + Document(String[] token) + { + tokens = token; + } String[] getTokens() { - return null; + return tokens; } int getTokenCount() { - return 0; + return tokens.length; } boolean hasToken(String token) { + for(int i = 0; i < tokens.length; i++) + { + if(token.equals(tokens[i])) + return true; + } return false; } } diff --git a/src/main/java/track/lessons/lesson2/Parser.java b/src/main/java/track/lessons/lesson2/Parser.java index 7276042d..d556cbc2 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java +++ b/src/main/java/track/lessons/lesson2/Parser.java @@ -6,17 +6,26 @@ /** * */ + public class Parser { Document parse(String data) { - return null; + Document doc = new Document(data.trim().split("[,;:.!?\\s]+")); + return doc; } public static void main(String[] args) throws Exception { String path = "path/to/file"; BufferedReader reader = new BufferedReader(new FileReader(path)); - // reader умеет читать по строкам с помощью метода readLine() + Parser pars = new Parser(); + String line, resline; + while ((line = reader.readLine()) != null) + { + resline += line; + } + pars.parse(resline); + // reader умеет читать по строкам с помощью метода readLine() // Создайте объект Parser From cb7b35432450ec5b74981519939739b0b4b86748 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 6 Oct 2016 17:22:39 +0300 Subject: [PATCH 03/36] remove --- src/main/java/track/lessons/lesson2/Parser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/track/lessons/lesson2/Parser.java b/src/main/java/track/lessons/lesson2/Parser.java index d556cbc2..c5b8e4f8 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java +++ b/src/main/java/track/lessons/lesson2/Parser.java @@ -10,7 +10,7 @@ public class Parser { Document parse(String data) { - Document doc = new Document(data.trim().split("[,;:.!?\\s]+")); + Document doc = new Document(data.trim().split(" \\s+")); return doc; } From e131560b931f0baadcace1448c25d4c4aa882399 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 6 Oct 2016 17:28:34 +0300 Subject: [PATCH 04/36] repair --- src/main/java/track/lessons/lesson2/Document.java | 2 +- src/main/java/track/lessons/lesson2/Parser.java | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/java/track/lessons/lesson2/Document.java b/src/main/java/track/lessons/lesson2/Document.java index 69271e1b..61a73e0d 100644 --- a/src/main/java/track/lessons/lesson2/Document.java +++ b/src/main/java/track/lessons/lesson2/Document.java @@ -7,7 +7,7 @@ public class Document { String[] tokens; Document(String[] token) { - tokens = token; + this.tokens = token; } String[] getTokens() { diff --git a/src/main/java/track/lessons/lesson2/Parser.java b/src/main/java/track/lessons/lesson2/Parser.java index c5b8e4f8..70c48714 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java +++ b/src/main/java/track/lessons/lesson2/Parser.java @@ -18,19 +18,14 @@ public static void main(String[] args) throws Exception { String path = "path/to/file"; BufferedReader reader = new BufferedReader(new FileReader(path)); + StringBuilder builder = new StringBuilder(); Parser pars = new Parser(); - String line, resline; + String line; while ((line = reader.readLine()) != null) { - resline += line; + builder.append(line); } - pars.parse(resline); - // reader умеет читать по строкам с помощью метода readLine() - - // Создайте объект Parser - - // Получите объект Document, реализовав метод parse() - - + String res = builder.toString(); + Document doc = pars.parse(res); } } From 64e355242b0d095eb53ffd5f2aabc033d4a89232 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 6 Oct 2016 17:36:01 +0300 Subject: [PATCH 05/36] repair --- .../java/track/lessons/lesson2/Document.java | 17 +++++------- .../java/track/lessons/lesson2/Document.java~ | 24 +++++++++++++++++ .../java/track/lessons/lesson2/Parser.java | 27 ++++++++----------- .../java/track/lessons/lesson2/Parser.java~ | 26 ++++++++++++++++++ 4 files changed, 67 insertions(+), 27 deletions(-) create mode 100644 src/main/java/track/lessons/lesson2/Document.java~ create mode 100644 src/main/java/track/lessons/lesson2/Parser.java~ diff --git a/src/main/java/track/lessons/lesson2/Document.java b/src/main/java/track/lessons/lesson2/Document.java index 61a73e0d..c568ec14 100644 --- a/src/main/java/track/lessons/lesson2/Document.java +++ b/src/main/java/track/lessons/lesson2/Document.java @@ -1,13 +1,9 @@ package track.lessons.lesson2; -/** - * - */ public class Document { String[] tokens; - Document(String[] token) - { - this.tokens = token; + Document(String[] token) { + this.tokens = token; } String[] getTokens() { @@ -19,11 +15,10 @@ int getTokenCount() { } boolean hasToken(String token) { - for(int i = 0; i < tokens.length; i++) - { - if(token.equals(tokens[i])) - return true; - } + for(int i = 0; i < tokens.length; i++) { + if(token.equals(tokens[i])) + return true; + } return false; } } diff --git a/src/main/java/track/lessons/lesson2/Document.java~ b/src/main/java/track/lessons/lesson2/Document.java~ new file mode 100644 index 00000000..c568ec14 --- /dev/null +++ b/src/main/java/track/lessons/lesson2/Document.java~ @@ -0,0 +1,24 @@ +package track.lessons.lesson2; + +public class Document { + String[] tokens; + Document(String[] token) { + this.tokens = token; + } + + String[] getTokens() { + return tokens; + } + + int getTokenCount() { + return tokens.length; + } + + boolean hasToken(String token) { + for(int i = 0; i < tokens.length; i++) { + if(token.equals(tokens[i])) + return true; + } + return false; + } +} diff --git a/src/main/java/track/lessons/lesson2/Parser.java b/src/main/java/track/lessons/lesson2/Parser.java index 70c48714..bbdb7768 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java +++ b/src/main/java/track/lessons/lesson2/Parser.java @@ -3,29 +3,24 @@ import java.io.BufferedReader; import java.io.FileReader; -/** - * - */ - public class Parser { Document parse(String data) { - Document doc = new Document(data.trim().split(" \\s+")); - return doc; + Document doc = new Document(data.trim().split(" \\s+")); + return doc; } public static void main(String[] args) throws Exception { String path = "path/to/file"; BufferedReader reader = new BufferedReader(new FileReader(path)); - StringBuilder builder = new StringBuilder(); - Parser pars = new Parser(); - String line; - while ((line = reader.readLine()) != null) - { - builder.append(line); - } - String res = builder.toString(); - Document doc = pars.parse(res); - } + StringBuilder builder = new StringBuilder(); + Parser pars = new Parser(); + String line; + while ((line = reader.readLine()) != null) { + builder.append(line); + } + String res = builder.toString(); + Document doc = pars.parse(res); + } } diff --git a/src/main/java/track/lessons/lesson2/Parser.java~ b/src/main/java/track/lessons/lesson2/Parser.java~ new file mode 100644 index 00000000..bbdb7768 --- /dev/null +++ b/src/main/java/track/lessons/lesson2/Parser.java~ @@ -0,0 +1,26 @@ +package track.lessons.lesson2; + +import java.io.BufferedReader; +import java.io.FileReader; + +public class Parser { + + Document parse(String data) { + Document doc = new Document(data.trim().split(" \\s+")); + return doc; + } + + public static void main(String[] args) throws Exception { + + String path = "path/to/file"; + BufferedReader reader = new BufferedReader(new FileReader(path)); + StringBuilder builder = new StringBuilder(); + Parser pars = new Parser(); + String line; + while ((line = reader.readLine()) != null) { + builder.append(line); + } + String res = builder.toString(); + Document doc = pars.parse(res); + } +} From 79c6f5fbb8ac040098162c76322237142411a37c Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 6 Oct 2016 17:43:42 +0300 Subject: [PATCH 06/36] tabs --- .../java/track/lessons/lesson2/Document.java | 10 +++++----- .../java/track/lessons/lesson2/Parser.java | 18 ++++++++++-------- .../java/track/lessons/lesson2/Parser.java~ | 18 ++++++++++-------- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/main/java/track/lessons/lesson2/Document.java b/src/main/java/track/lessons/lesson2/Document.java index c568ec14..59d82cae 100644 --- a/src/main/java/track/lessons/lesson2/Document.java +++ b/src/main/java/track/lessons/lesson2/Document.java @@ -3,7 +3,7 @@ public class Document { String[] tokens; Document(String[] token) { - this.tokens = token; + this.tokens = token; } String[] getTokens() { @@ -15,10 +15,10 @@ int getTokenCount() { } boolean hasToken(String token) { - for(int i = 0; i < tokens.length; i++) { - if(token.equals(tokens[i])) - return true; - } + for(int i = 0; i < tokens.length; i++) { + if(token.equals(tokens[i])) + return true; + } return false; } } diff --git a/src/main/java/track/lessons/lesson2/Parser.java b/src/main/java/track/lessons/lesson2/Parser.java index bbdb7768..2c4a24a2 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java +++ b/src/main/java/track/lessons/lesson2/Parser.java @@ -4,10 +4,12 @@ import java.io.FileReader; public class Parser { - Document parse(String data) { - Document doc = new Document(data.trim().split(" \\s+")); - return doc; + String[] tokens = data.split("[ ]"); + if(tokens == null) { + return null; + } + return new Document(tokens); } public static void main(String[] args) throws Exception { @@ -18,9 +20,9 @@ public static void main(String[] args) throws Exception { Parser pars = new Parser(); String line; while ((line = reader.readLine()) != null) { - builder.append(line); - } - String res = builder.toString(); - Document doc = pars.parse(res); - } + builder.append(line); + } + String res = builder.toString(); + Document doc = pars.parse(res); + } } diff --git a/src/main/java/track/lessons/lesson2/Parser.java~ b/src/main/java/track/lessons/lesson2/Parser.java~ index bbdb7768..2c4a24a2 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java~ +++ b/src/main/java/track/lessons/lesson2/Parser.java~ @@ -4,10 +4,12 @@ import java.io.BufferedReader; import java.io.FileReader; public class Parser { - Document parse(String data) { - Document doc = new Document(data.trim().split(" \\s+")); - return doc; + String[] tokens = data.split("[ ]"); + if(tokens == null) { + return null; + } + return new Document(tokens); } public static void main(String[] args) throws Exception { @@ -18,9 +20,9 @@ public class Parser { Parser pars = new Parser(); String line; while ((line = reader.readLine()) != null) { - builder.append(line); - } - String res = builder.toString(); - Document doc = pars.parse(res); - } + builder.append(line); + } + String res = builder.toString(); + Document doc = pars.parse(res); + } } From 2aff30fe0152ef8977d82240173e4be58499912e Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 6 Oct 2016 17:50:25 +0300 Subject: [PATCH 07/36] tabs --- src/main/java/track/lessons/lesson2/Document.java | 6 ++++-- src/main/java/track/lessons/lesson2/Document.java~ | 12 +++++++----- src/main/java/track/lessons/lesson2/Parser.java | 3 +-- src/main/java/track/lessons/lesson2/Parser.java~ | 3 +-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/track/lessons/lesson2/Document.java b/src/main/java/track/lessons/lesson2/Document.java index 59d82cae..657ebfbf 100644 --- a/src/main/java/track/lessons/lesson2/Document.java +++ b/src/main/java/track/lessons/lesson2/Document.java @@ -2,6 +2,7 @@ public class Document { String[] tokens; + Document(String[] token) { this.tokens = token; } @@ -15,9 +16,10 @@ int getTokenCount() { } boolean hasToken(String token) { - for(int i = 0; i < tokens.length; i++) { - if(token.equals(tokens[i])) + for (int i = 0; i < tokens.length; i++) { + if (token.equals(tokens[i])) { return true; + } } return false; } diff --git a/src/main/java/track/lessons/lesson2/Document.java~ b/src/main/java/track/lessons/lesson2/Document.java~ index c568ec14..3e687db5 100644 --- a/src/main/java/track/lessons/lesson2/Document.java~ +++ b/src/main/java/track/lessons/lesson2/Document.java~ @@ -2,8 +2,9 @@ package track.lessons.lesson2; public class Document { String[] tokens; + Document(String[] token) { - this.tokens = token; + this.tokens = token; } String[] getTokens() { @@ -15,10 +16,11 @@ public class Document { } boolean hasToken(String token) { - for(int i = 0; i < tokens.length; i++) { - if(token.equals(tokens[i])) - return true; - } + for(int i = 0; i < tokens.length; i++) { + if (token.equals(tokens[i])) { + return true; + } + } return false; } } diff --git a/src/main/java/track/lessons/lesson2/Parser.java b/src/main/java/track/lessons/lesson2/Parser.java index 2c4a24a2..e4e152c9 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java +++ b/src/main/java/track/lessons/lesson2/Parser.java @@ -6,9 +6,8 @@ public class Parser { Document parse(String data) { String[] tokens = data.split("[ ]"); - if(tokens == null) { + if(tokens == null) return null; - } return new Document(tokens); } diff --git a/src/main/java/track/lessons/lesson2/Parser.java~ b/src/main/java/track/lessons/lesson2/Parser.java~ index 2c4a24a2..e4e152c9 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java~ +++ b/src/main/java/track/lessons/lesson2/Parser.java~ @@ -6,9 +6,8 @@ import java.io.FileReader; public class Parser { Document parse(String data) { String[] tokens = data.split("[ ]"); - if(tokens == null) { + if(tokens == null) return null; - } return new Document(tokens); } From b3255d3a2a01d71e3ba84821ddced978d0dcfd2c Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 6 Oct 2016 17:56:40 +0300 Subject: [PATCH 08/36] whitespace --- src/main/java/track/lessons/lesson2/Parser.java | 9 +++++---- src/main/java/track/lessons/lesson2/Parser.java~ | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/track/lessons/lesson2/Parser.java b/src/main/java/track/lessons/lesson2/Parser.java index e4e152c9..fdea943f 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java +++ b/src/main/java/track/lessons/lesson2/Parser.java @@ -6,8 +6,9 @@ public class Parser { Document parse(String data) { String[] tokens = data.split("[ ]"); - if(tokens == null) - return null; + if (tokens == null) { + return null; + } return new Document(tokens); } @@ -17,11 +18,11 @@ public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new FileReader(path)); StringBuilder builder = new StringBuilder(); Parser pars = new Parser(); - String line; + String line; while ((line = reader.readLine()) != null) { builder.append(line); } String res = builder.toString(); Document doc = pars.parse(res); - } + } } diff --git a/src/main/java/track/lessons/lesson2/Parser.java~ b/src/main/java/track/lessons/lesson2/Parser.java~ index e4e152c9..e2f84799 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java~ +++ b/src/main/java/track/lessons/lesson2/Parser.java~ @@ -6,8 +6,9 @@ import java.io.FileReader; public class Parser { Document parse(String data) { String[] tokens = data.split("[ ]"); - if(tokens == null) - return null; + if (tokens == null) { + return null; + } return new Document(tokens); } @@ -17,7 +18,7 @@ public class Parser { BufferedReader reader = new BufferedReader(new FileReader(path)); StringBuilder builder = new StringBuilder(); Parser pars = new Parser(); - String line; + String line; while ((line = reader.readLine()) != null) { builder.append(line); } From f1cfc7d190dbb837f6e9f73306c42d8af5929e7f Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 12 Oct 2016 19:59:59 +0300 Subject: [PATCH 09/36] list --- .../track/lessons/lesson3/DynamicList.java | 52 +++++++ .../track/lessons/lesson3/LinkedList.java | 139 ++++++++++++++++++ src/main/java/track/lessons/lesson3/List.java | 11 ++ .../java/track/lessons/lesson3/ListMain.java | 72 +++++++++ 4 files changed, 274 insertions(+) create mode 100644 src/main/java/track/lessons/lesson3/DynamicList.java create mode 100644 src/main/java/track/lessons/lesson3/LinkedList.java create mode 100644 src/main/java/track/lessons/lesson3/List.java create mode 100644 src/main/java/track/lessons/lesson3/ListMain.java diff --git a/src/main/java/track/lessons/lesson3/DynamicList.java b/src/main/java/track/lessons/lesson3/DynamicList.java new file mode 100644 index 00000000..d9904cec --- /dev/null +++ b/src/main/java/track/lessons/lesson3/DynamicList.java @@ -0,0 +1,52 @@ +package track.lessons.lesson3; + +/** + * + */ +public class DynamicList extends List{ + private static final int DEFAULT_SIZE = 1000; + private int[] array; + private int size; + + public DynamicList() { + elements = new int[DEFAULT_SIZE]; + } + + @overried + public void add(int value) { + if(size == array.length) { + allocate(); + } + array[size++] = value; + } + + @overried + public void remove(int idx) { + valid_index(idx); + int value = array[idx]; + System.arraycopy(array, idx + 1, array, idx, size-- - idx); + return value; + } + + @overried + public int get(int idx) { + valid_index(idx); + return array[idx]; + } + @overried + public int size() { + return size; + } + + private void allocate() { + int[] newarray = new int[2 * size]; + System.arraycopy(array, 0, newarray, 0, size); + elements = newarray; + } + + private valid_index(int idx) { + if (idx < 0 || idx >= size) { + throw new IndexOutOfBoundsException("Invalid index"); + } + } +} diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java b/src/main/java/track/lessons/lesson3/LinkedList.java new file mode 100644 index 00000000..fc8e74d9 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/LinkedList.java @@ -0,0 +1,139 @@ +package track.lessons.lesson3; + +/** + * + */ +public class LinkedList extends List implements Stack, Queue { + + private class Node { + public Node next; + public Node prev; + public int value; + } + + private Node first; + private Node last; + private int size; + + public LinkedList() { + first = null; + last = null; + size = 0; + } + + private boolean isEmpty() { + if (size > 0) { + return true; + } + return false; + } + + @Override + public void add(int item) { + if (isEmpty() == true) { + newNode = new Node(); + newNode.prev = newNode; + newNode.next = newNode; + first = newNode; + } + else { + Node newNode = new Node(); + newNode.prev = last; + newNode.next = first; + } + last = newNode; + newNode.value = item; + size++; + } + + private valid_index(int idx) { + if (idx < 0 || idx >= size) { + throw new IndexOutOfBoundsException("Invalid index"); + } + } + + @Override + public void remove(int idx) { + valid_index(idx); + size--; + if (idx == 0) { + return removeFirst(); + } + if (idx == size) { + return removeLast(); + } + node = first; + while (int i = 0; i <= idx; i++) { + node = node.next; + } + int cur_value = node.value; + Node next = node.next; + node.prev.next = node.next; + next.prev = node.prev; + return cur_value; + } + + private int removeLast() { + int value = last.value; + if (last.prev != null) { + last = last.prev; + last.prev.next = null; + } + else { + last = null; + } + return value; + } + + private int removeFirst() { + int value = first.value; + if(first.next != null) { + first = first.next; + first.next.prev = null; + } + else { + first = null; + } + return value; + } + + @Override + int get(int idx){ + valid_index(idx); + if (idx == 0) { + return first.value; + } + if (idx == size - 1) { + return last.value; + } + node = first; + while (int i = 0; i <= idx; i++) { + node = node.next; + } + return next.value; + } + @Override + int size(){ + return size; + } + + @Override + public void enqueue(int value) { + add(value); + } + + @Override + public int dequeu() { + return remove(0); + } + + @Override + public void push(int value) { + add(value); + } + + @Override + public int pop() { + return remove(size - 1); + } +} diff --git a/src/main/java/track/lessons/lesson3/List.java b/src/main/java/track/lessons/lesson3/List.java new file mode 100644 index 00000000..bfc5a974 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/List.java @@ -0,0 +1,11 @@ +package track.lessons.lesson3; + +/** + * + */ +public abstract class List { + void add(int item); + void remove(int idx); + int get(int idx); + int size(); +} diff --git a/src/main/java/track/lessons/lesson3/ListMain.java b/src/main/java/track/lessons/lesson3/ListMain.java new file mode 100644 index 00000000..a8348963 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/ListMain.java @@ -0,0 +1,72 @@ +package track.lessons.lesson3; + +/** + * + */ +public class ListMain { + + public static void main(String[] args) { + LinkedList linkedList = new LinkedList(); + + for (int i = 0; i < 5; i++) { + linkedList.add(i); + } + + System.out.println(linkedList); + System.out.println(linkedList.get(0)); + System.out.println(linkedList.get(3)); + System.out.println(linkedList.remove(1)); + System.out.println(linkedList); + System.out.println(linkedList.remove(linkedList.size() - 1)); + System.out.println(linkedList); + System.out.println(linkedList.remove(0)); + System.out.println(linkedList); + System.out.println(linkedList.remove(0)); + System.out.println(linkedList.remove(0)); + System.out.println(linkedList); + + for (int i = 0; i < 5; i++) { + linkedList.push(i); + } + System.out.println(linkedList); + System.out.println(linkedList.pop()); + + DynamicList dynamicList = new DynamicList(); + + for (int i = 0; i < 12; i++) { + dynamicList.add(i); + } + + System.out.println(dynamicList); + System.out.println(dynamicList.get(0)); + System.out.println(dynamicList.get(3)); + System.out.println(dynamicList.remove(1)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(dynamicList.size() - 1)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); +System.out.println(dynamicList); + +// List list = new DynamicList(); +// list.add(1); +// list.add(2); +// list.add(10); +// int first = list.remove(0); + + } +} From 5b1a81c1d1079487df25fccc6ea246db783d0d0b Mon Sep 17 00:00:00 2001 From: Ivan Date: Wed, 12 Oct 2016 23:56:30 +0300 Subject: [PATCH 10/36] list --- bin/track/lessons/lesson3/List.class | Bin 0 -> 284 bytes src/com/company/Main.java | 8 + .../track/lessons/lesson3/DynamicList.java | 16 +- .../track/lessons/lesson3/DynamicList.java~ | 52 +++++++ .../track/lessons/lesson3/LinkedList.java | 18 ++- .../track/lessons/lesson3/LinkedList.java~ | 141 ++++++++++++++++++ src/main/java/track/lessons/lesson3/List.java | 8 +- .../java/track/lessons/lesson3/List.java~ | 11 ++ .../java/track/lessons/lesson3/ListMain.java | 54 +------ .../java/track/lessons/lesson3/ListMain.java~ | 72 +++++++++ .../java/track/lessons/lesson3/Queue.java | 6 + .../java/track/lessons/lesson3/Queue.java~ | 2 + .../java/track/lessons/lesson3/Stack.java | 6 + .../java/track/lessons/lesson3/Stack.java~ | 4 + 14 files changed, 327 insertions(+), 71 deletions(-) create mode 100644 bin/track/lessons/lesson3/List.class create mode 100644 src/com/company/Main.java create mode 100644 src/main/java/track/lessons/lesson3/DynamicList.java~ create mode 100644 src/main/java/track/lessons/lesson3/LinkedList.java~ create mode 100644 src/main/java/track/lessons/lesson3/List.java~ create mode 100644 src/main/java/track/lessons/lesson3/ListMain.java~ create mode 100644 src/main/java/track/lessons/lesson3/Queue.java create mode 100644 src/main/java/track/lessons/lesson3/Queue.java~ create mode 100644 src/main/java/track/lessons/lesson3/Stack.java create mode 100644 src/main/java/track/lessons/lesson3/Stack.java~ diff --git a/bin/track/lessons/lesson3/List.class b/bin/track/lessons/lesson3/List.class new file mode 100644 index 0000000000000000000000000000000000000000..418618864c8181982c967a312a1bdce472476ec4 GIT binary patch literal 284 zcmXYrF;BxV6ol_JsYBA1roe>6z?ODshB6|SN|h>AFo4*d#EM+fM2g)G{Z~v#4Ez9o z6yiCphdbZrv)=pt`~Cs&fSU*&CIPMjToc5juC;w4c**pg;4hm(5yl%`tLObLQ|+6~ zDkh#R3Vu%3t|eNvYYvW<%AV+&&FG_J$&^F%+U(n0t+e|bZnUxUtvtvfeDn#oww3uu zS}9|i+MIonx*8#N#k7)jnZ9IOm0SNFJ>J=!K6p;2g3}!*a&-0u`s52CU=3;j(LwS$l~80Rh)BumAu6 literal 0 HcmV?d00001 diff --git a/src/com/company/Main.java b/src/com/company/Main.java new file mode 100644 index 00000000..d9d1a8b5 --- /dev/null +++ b/src/com/company/Main.java @@ -0,0 +1,8 @@ +package com.company; + +public class Main { + + public static void main(String[] args) { + // write your code here + } +} diff --git a/src/main/java/track/lessons/lesson3/DynamicList.java b/src/main/java/track/lessons/lesson3/DynamicList.java index d9904cec..c6c63a94 100644 --- a/src/main/java/track/lessons/lesson3/DynamicList.java +++ b/src/main/java/track/lessons/lesson3/DynamicList.java @@ -9,10 +9,10 @@ public class DynamicList extends List{ private int size; public DynamicList() { - elements = new int[DEFAULT_SIZE]; + array = new int[DEFAULT_SIZE]; } - @overried + @Override public void add(int value) { if(size == array.length) { allocate(); @@ -20,20 +20,20 @@ public void add(int value) { array[size++] = value; } - @overried - public void remove(int idx) { + @Override + public int remove(int idx) { valid_index(idx); int value = array[idx]; System.arraycopy(array, idx + 1, array, idx, size-- - idx); return value; } - @overried + @Override public int get(int idx) { valid_index(idx); return array[idx]; } - @overried + @Override public int size() { return size; } @@ -41,10 +41,10 @@ public int size() { private void allocate() { int[] newarray = new int[2 * size]; System.arraycopy(array, 0, newarray, 0, size); - elements = newarray; + array = newarray; } - private valid_index(int idx) { + private void valid_index(int idx) { if (idx < 0 || idx >= size) { throw new IndexOutOfBoundsException("Invalid index"); } diff --git a/src/main/java/track/lessons/lesson3/DynamicList.java~ b/src/main/java/track/lessons/lesson3/DynamicList.java~ new file mode 100644 index 00000000..c6c63a94 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/DynamicList.java~ @@ -0,0 +1,52 @@ +package track.lessons.lesson3; + +/** + * + */ +public class DynamicList extends List{ + private static final int DEFAULT_SIZE = 1000; + private int[] array; + private int size; + + public DynamicList() { + array = new int[DEFAULT_SIZE]; + } + + @Override + public void add(int value) { + if(size == array.length) { + allocate(); + } + array[size++] = value; + } + + @Override + public int remove(int idx) { + valid_index(idx); + int value = array[idx]; + System.arraycopy(array, idx + 1, array, idx, size-- - idx); + return value; + } + + @Override + public int get(int idx) { + valid_index(idx); + return array[idx]; + } + @Override + public int size() { + return size; + } + + private void allocate() { + int[] newarray = new int[2 * size]; + System.arraycopy(array, 0, newarray, 0, size); + array = newarray; + } + + private void valid_index(int idx) { + if (idx < 0 || idx >= size) { + throw new IndexOutOfBoundsException("Invalid index"); + } + } +} diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java b/src/main/java/track/lessons/lesson3/LinkedList.java index fc8e74d9..64147f6e 100644 --- a/src/main/java/track/lessons/lesson3/LinkedList.java +++ b/src/main/java/track/lessons/lesson3/LinkedList.java @@ -30,14 +30,13 @@ private boolean isEmpty() { @Override public void add(int item) { + Node newNode = new Node(); if (isEmpty() == true) { - newNode = new Node(); newNode.prev = newNode; newNode.next = newNode; first = newNode; } else { - Node newNode = new Node(); newNode.prev = last; newNode.next = first; } @@ -46,14 +45,14 @@ public void add(int item) { size++; } - private valid_index(int idx) { + private void valid_index(int idx) { if (idx < 0 || idx >= size) { throw new IndexOutOfBoundsException("Invalid index"); } } @Override - public void remove(int idx) { + public int remove(int idx) { valid_index(idx); size--; if (idx == 0) { @@ -62,12 +61,14 @@ public void remove(int idx) { if (idx == size) { return removeLast(); } + Node node = new Node(); node = first; - while (int i = 0; i <= idx; i++) { + for (int i = 0; i <= idx; i++) { node = node.next; } int cur_value = node.value; - Node next = node.next; + Node next = new Node(); + next = node.next; node.prev.next = node.next; next.prev = node.prev; return cur_value; @@ -106,11 +107,12 @@ int get(int idx){ if (idx == size - 1) { return last.value; } + Node node = new Node(); node = first; - while (int i = 0; i <= idx; i++) { + for (int i = 0; i <= idx; i++) { node = node.next; } - return next.value; + return node.value; } @Override int size(){ diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java~ b/src/main/java/track/lessons/lesson3/LinkedList.java~ new file mode 100644 index 00000000..42297803 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/LinkedList.java~ @@ -0,0 +1,141 @@ +package track.lessons.lesson3; + +/** + * + */ +public class LinkedList extends List implements Stack, Queue { + + private class Node { + public Node next; + public Node prev; + public int value; + } + + private Node first; + private Node last; + private int size; + + public LinkedList() { + first = null; + last = null; + size = 0; + } + + private boolean isEmpty() { + if (size > 0) { + return true; + } + return false; + } + + @Override + public void add(int item) { + Node newNode = new Node(); + if (isEmpty() == true) { + newNode.prev = newNode; + newNode.next = newNode; + first = newNode; + } + else { + newNode.prev = last; + newNode.next = first; + } + last = newNode; + newNode.value = item; + size++; + } + + private void valid_index(int idx) { + if (idx < 0 || idx >= size) { + throw new IndexOutOfBoundsException("Invalid index"); + } + } + + @Override + public int remove(int idx) { + valid_index(idx); + size--; + if (idx == 0) { + return removeFirst(); + } + if (idx == size) { + return removeLast(); + } + Node node = new Node(); + node = first; + for (int i = 0; i <= idx; i++) { + node = node.next; + } + int cur_value = node.value; + Node next = new Node(); + next = node.next; + node.prev.next = node.next; + next.prev = node.prev; + return cur_value; + } + + private int removeLast() { + int value = last.value; + if (last.prev != null) { + last = last.prev; + last.prev.next = null; + } + else { + last = null; + } + return value; + } + + private int removeFirst() { + int value = first.value; + if(first.next != null) { + first = first.next; + first.next.prev = null; + } + else { + first = null; + } + return value; + } + + @Override + int get(int idx){ + valid_index(idx); + if (idx == 0) { + return first.value; + } + if (idx == size - 1) { + return last.value; + } + Node node = new Node(); + node = first; + for (int i = 0; i <= idx; i++) { + node = node.next; + } + return next.value; + } + @Override + int size(){ + return size; + } + + @Override + public void enqueue(int value) { + add(value); + } + + @Override + public int dequeu() { + return remove(0); + } + + @Override + public void push(int value) { + add(value); + } + + @Override + public int pop() { + return remove(size - 1); + } +} diff --git a/src/main/java/track/lessons/lesson3/List.java b/src/main/java/track/lessons/lesson3/List.java index bfc5a974..361b9613 100644 --- a/src/main/java/track/lessons/lesson3/List.java +++ b/src/main/java/track/lessons/lesson3/List.java @@ -4,8 +4,8 @@ * */ public abstract class List { - void add(int item); - void remove(int idx); - int get(int idx); - int size(); + abstract void add(int item); + abstract int remove(int idx); + abstract int get(int idx); + abstract int size(); } diff --git a/src/main/java/track/lessons/lesson3/List.java~ b/src/main/java/track/lessons/lesson3/List.java~ new file mode 100644 index 00000000..e5f83d5c --- /dev/null +++ b/src/main/java/track/lessons/lesson3/List.java~ @@ -0,0 +1,11 @@ +package track.lessons.lesson3; + +/** + * + */ +public abstract class List { + abstract void add(int item); + abstract void remove(int idx); + abstract int get(int idx); + abstract int size(); +} diff --git a/src/main/java/track/lessons/lesson3/ListMain.java b/src/main/java/track/lessons/lesson3/ListMain.java index a8348963..ce75a6dd 100644 --- a/src/main/java/track/lessons/lesson3/ListMain.java +++ b/src/main/java/track/lessons/lesson3/ListMain.java @@ -8,65 +8,17 @@ public class ListMain { public static void main(String[] args) { LinkedList linkedList = new LinkedList(); - for (int i = 0; i < 5; i++) { + for (int i = 0; i < 1000; i++) { linkedList.add(i); } - - System.out.println(linkedList); - System.out.println(linkedList.get(0)); - System.out.println(linkedList.get(3)); - System.out.println(linkedList.remove(1)); - System.out.println(linkedList); - System.out.println(linkedList.remove(linkedList.size() - 1)); - System.out.println(linkedList); - System.out.println(linkedList.remove(0)); - System.out.println(linkedList); - System.out.println(linkedList.remove(0)); - System.out.println(linkedList.remove(0)); - System.out.println(linkedList); - - for (int i = 0; i < 5; i++) { + for (int i = 0; i < 1000; i++) { linkedList.push(i); } - System.out.println(linkedList); - System.out.println(linkedList.pop()); - DynamicList dynamicList = new DynamicList(); - for (int i = 0; i < 12; i++) { + for (int i = 0; i < 1000; i++) { dynamicList.add(i); } - System.out.println(dynamicList); - System.out.println(dynamicList.get(0)); - System.out.println(dynamicList.get(3)); - System.out.println(dynamicList.remove(1)); - System.out.println(dynamicList); - System.out.println(dynamicList.remove(dynamicList.size() - 1)); - System.out.println(dynamicList); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList); - System.out.println(dynamicList.remove(0)); - System.out.println(dynamicList); - System.out.println(dynamicList.remove(0)); -System.out.println(dynamicList); - -// List list = new DynamicList(); -// list.add(1); -// list.add(2); -// list.add(10); -// int first = list.remove(0); - } } diff --git a/src/main/java/track/lessons/lesson3/ListMain.java~ b/src/main/java/track/lessons/lesson3/ListMain.java~ new file mode 100644 index 00000000..26d7438c --- /dev/null +++ b/src/main/java/track/lessons/lesson3/ListMain.java~ @@ -0,0 +1,72 @@ +package track.lessons.lesson3; + +/** + * + */ +public class ListMain { + + public static void main(String[] args) { + LinkedList linkedList = new LinkedList(); + + for (int i = 0; i < 1000; i++) { + linkedList.add(i); + } + + System.out.println(linkedList); + System.out.println(linkedList.get(0)); + System.out.println(linkedList.get(3)); + System.out.println(linkedList.remove(1)); + System.out.println(linkedList); + System.out.println(linkedList.remove(linkedList.size() - 1)); + System.out.println(linkedList); + System.out.println(linkedList.remove(0)); + System.out.println(linkedList); + System.out.println(linkedList.remove(0)); + System.out.println(linkedList.remove(0)); + System.out.println(linkedList); + + for (int i = 0; i < 5; i++) { + linkedList.push(i); + } + System.out.println(linkedList); + System.out.println(linkedList.pop()); + + DynamicList dynamicList = new DynamicList(); + + for (int i = 0; i < 12; i++) { + dynamicList.add(i); + } + + System.out.println(dynamicList); + System.out.println(dynamicList.get(0)); + System.out.println(dynamicList.get(3)); + System.out.println(dynamicList.remove(1)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(dynamicList.size() - 1)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + System.out.println(dynamicList.remove(0)); + System.out.println(dynamicList); + +// List list = new DynamicList(); +// list.add(1); +// list.add(2); +// list.add(10); +// int first = list.remove(0); + + } +} diff --git a/src/main/java/track/lessons/lesson3/Queue.java b/src/main/java/track/lessons/lesson3/Queue.java new file mode 100644 index 00000000..b9f3b2d6 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/Queue.java @@ -0,0 +1,6 @@ +package track.lessons.lesson3; + +interface Queue { + void enqueue(int value); + int dequeu(); +} diff --git a/src/main/java/track/lessons/lesson3/Queue.java~ b/src/main/java/track/lessons/lesson3/Queue.java~ new file mode 100644 index 00000000..5df61cb7 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/Queue.java~ @@ -0,0 +1,2 @@ +package track.lessons.lesson3; + diff --git a/src/main/java/track/lessons/lesson3/Stack.java b/src/main/java/track/lessons/lesson3/Stack.java new file mode 100644 index 00000000..dd5f2d23 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/Stack.java @@ -0,0 +1,6 @@ +package track.lessons.lesson3; + +interface Stack { + void push(int value); + int pop(); +} diff --git a/src/main/java/track/lessons/lesson3/Stack.java~ b/src/main/java/track/lessons/lesson3/Stack.java~ new file mode 100644 index 00000000..17e08092 --- /dev/null +++ b/src/main/java/track/lessons/lesson3/Stack.java~ @@ -0,0 +1,4 @@ +interface Stack { + void push(int value); + int pop(); +} From 3016df590a9a304bf60f8e60c1e4fc69e2415299 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 13 Oct 2016 19:49:17 +0300 Subject: [PATCH 11/36] next --- bin/track/lessons/lesson3/List.class | Bin 284 -> 0 bytes src/com/company/Main.java | 8 -------- 2 files changed, 8 deletions(-) delete mode 100644 bin/track/lessons/lesson3/List.class delete mode 100644 src/com/company/Main.java diff --git a/bin/track/lessons/lesson3/List.class b/bin/track/lessons/lesson3/List.class deleted file mode 100644 index 418618864c8181982c967a312a1bdce472476ec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmXYrF;BxV6ol_JsYBA1roe>6z?ODshB6|SN|h>AFo4*d#EM+fM2g)G{Z~v#4Ez9o z6yiCphdbZrv)=pt`~Cs&fSU*&CIPMjToc5juC;w4c**pg;4hm(5yl%`tLObLQ|+6~ zDkh#R3Vu%3t|eNvYYvW<%AV+&&FG_J$&^F%+U(n0t+e|bZnUxUtvtvfeDn#oww3uu zS}9|i+MIonx*8#N#k7)jnZ9IOm0SNFJ>J=!K6p;2g3}!*a&-0u`s52CU=3;j(LwS$l~80Rh)BumAu6 diff --git a/src/com/company/Main.java b/src/com/company/Main.java deleted file mode 100644 index d9d1a8b5..00000000 --- a/src/com/company/Main.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.company; - -public class Main { - - public static void main(String[] args) { - // write your code here - } -} From 4f0bfe131b48beecf6f5a02fce694e22291e46d8 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 13 Oct 2016 20:07:10 +0300 Subject: [PATCH 12/36] list --- src/main/java/track/lessons/lesson3/LinkedList.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java b/src/main/java/track/lessons/lesson3/LinkedList.java index 64147f6e..80719df2 100644 --- a/src/main/java/track/lessons/lesson3/LinkedList.java +++ b/src/main/java/track/lessons/lesson3/LinkedList.java @@ -23,9 +23,9 @@ public LinkedList() { private boolean isEmpty() { if (size > 0) { - return true; + return false; } - return false; + return true; } @Override @@ -41,6 +41,7 @@ public void add(int item) { newNode.next = first; } last = newNode; + first.prev = last; newNode.value = item; size++; } From b21843f28a6b49bbcf1d1c7a142cfc392e202c5d Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Oct 2016 18:38:57 +0300 Subject: [PATCH 13/36] delete errors --- .../track/lessons/lesson3/DynamicList.java | 96 ++++--- .../track/lessons/lesson3/LinkedList.java | 247 +++++++++--------- src/main/java/track/lessons/lesson3/List.java | 14 +- .../java/track/lessons/lesson3/ListMain.java | 13 +- 4 files changed, 172 insertions(+), 198 deletions(-) diff --git a/src/main/java/track/lessons/lesson3/DynamicList.java b/src/main/java/track/lessons/lesson3/DynamicList.java index 6e375aa8..fc480ccc 100644 --- a/src/main/java/track/lessons/lesson3/DynamicList.java +++ b/src/main/java/track/lessons/lesson3/DynamicList.java @@ -1,56 +1,50 @@ package track.lessons.lesson3; -/** - * - */ -<<<<<<< HEAD + public class DynamicList extends List{ - private static final int DEFAULT_SIZE = 1000; - private int[] array; - private int size; - - public DynamicList() { - array = new int[DEFAULT_SIZE]; - } - - @Override - public void add(int value) { - if(size == array.length) { - allocate(); - } - array[size++] = value; - } - - @Override - public int remove(int idx) { - valid_index(idx); - int value = array[idx]; - System.arraycopy(array, idx + 1, array, idx, size-- - idx); - return value; - } - - @Override - public int get(int idx) { - valid_index(idx); - return array[idx]; - } - @Override - public int size() { - return size; - } - - private void allocate() { - int[] newarray = new int[2 * size]; - System.arraycopy(array, 0, newarray, 0, size); - array = newarray; + private static final int DEFAULT_SIZE = 1000; + private int[] array; + private int size; + + public DynamicList() { + array = new int[DEFAULT_SIZE]; + } + + @Override + public void add(int value) { + if(size == array.length) { + allocate(); } - - private void valid_index(int idx) { - if (idx < 0 || idx >= size) { - throw new IndexOutOfBoundsException("Invalid index"); - } + array[size++] = value; + } + + @Override + public int remove(int idx) { + valid_index(idx); + int value = array[idx]; + System.arraycopy(array, idx + 1, array, idx, size-- - idx); + return value; + } + + @Override + public int get(int idx) { + valid_index(idx); + return array[idx]; + } + @Override + public int size() { + return size; + } + + private void allocate() { + int[] newarray = new int[2 * size]; + System.arraycopy(array, 0, newarray, 0, size); + array = newarray; + } + + private void valid_index(int idx) { + if (idx < 0 || idx >= size) { + throw new IndexOutOfBoundsException("Invalid index"); } -======= -public class DynamicList { ->>>>>>> upstream/master -} + } +} \ No newline at end of file diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java b/src/main/java/track/lessons/lesson3/LinkedList.java index 4548682a..c7249497 100644 --- a/src/main/java/track/lessons/lesson3/LinkedList.java +++ b/src/main/java/track/lessons/lesson3/LinkedList.java @@ -1,146 +1,141 @@ package track.lessons.lesson3; -/** - * - */ -<<<<<<< HEAD + public class LinkedList extends List implements Stack, Queue { - - private class Node { - public Node next; - public Node prev; - public int value; + + private class Node { + public Node next; + public Node prev; + public int value; + } + + private Node first; + private Node last; + private int size; + + public LinkedList() { + first = null; + last = null; + size = 0; + } + + private boolean isEmpty() { + if (size > 0) { + return false; } + return true; + } - private Node first; - private Node last; - private int size; - - public LinkedList() { - first = null; - last = null; - size = 0; + @Override + public void add(int item) { + Node newNode = new Node(); + if (isEmpty() == true) { + newNode.prev = newNode; + newNode.next = newNode; + first = newNode; } - - private boolean isEmpty() { - if (size > 0) { - return false; - } - return true; + else { + newNode.prev = last; + newNode.next = first; } - - @Override - public void add(int item) { - Node newNode = new Node(); - if (isEmpty() == true) { - newNode.prev = newNode; - newNode.next = newNode; - first = newNode; - } - else { - newNode.prev = last; - newNode.next = first; - } - last = newNode; - first.prev = last; - newNode.value = item; - size++; + last = newNode; + first.prev = last; + newNode.value = item; + size++; + } + + private void valid_index(int idx) { + if (idx < 0 || idx >= size) { + throw new IndexOutOfBoundsException("Invalid index"); } - - private void valid_index(int idx) { - if (idx < 0 || idx >= size) { - throw new IndexOutOfBoundsException("Invalid index"); - } + } + + @Override + public int remove(int idx) { + valid_index(idx); + size--; + if (idx == 0) { + return removeFirst(); } - - @Override - public int remove(int idx) { - valid_index(idx); - size--; - if (idx == 0) { - return removeFirst(); - } - if (idx == size) { - return removeLast(); - } - Node node = new Node(); - node = first; - for (int i = 0; i <= idx; i++) { - node = node.next; - } - int cur_value = node.value; - Node next = new Node(); - next = node.next; - node.prev.next = node.next; - next.prev = node.prev; - return cur_value; + if (idx == size) { + return removeLast(); } - - private int removeLast() { - int value = last.value; - if (last.prev != null) { - last = last.prev; - last.prev.next = null; - } - else { - last = null; - } - return value; + Node node = new Node(); + node = first; + for (int i = 0; i <= idx; i++) { + node = node.next; } + int cur_value = node.value; + Node next = new Node(); + next = node.next; + node.prev.next = node.next; + next.prev = node.prev; + return cur_value; + } - private int removeFirst() { - int value = first.value; - if(first.next != null) { - first = first.next; - first.next.prev = null; - } - else { - first = null; - } - return value; + private int removeLast() { + int value = last.value; + if (last.prev != null) { + last = last.prev; + last.prev.next = null; } - - @Override - int get(int idx){ - valid_index(idx); - if (idx == 0) { - return first.value; - } - if (idx == size - 1) { - return last.value; - } - Node node = new Node(); - node = first; - for (int i = 0; i <= idx; i++) { - node = node.next; - } - return node.value; + else { + last = null; } - @Override - int size(){ - return size; + return value; + } + + private int removeFirst() { + int value = first.value; + if(first.next != null) { + first = first.next; + first.next.prev = null; } - - @Override - public void enqueue(int value) { - add(value); + else { + first = null; } + return value; + } - @Override - public int dequeu() { - return remove(0); + @Override + int get(int idx){ + valid_index(idx); + if (idx == 0) { + return first.value; } - - @Override - public void push(int value) { - add(value); + if (idx == size - 1) { + return last.value; } - - @Override - public int pop() { - return remove(size - 1); + Node node = new Node(); + node = first; + for (int i = 0; i <= idx; i++) { + node = node.next; } -======= -public class LinkedList { ->>>>>>> upstream/master -} + return node.value; + } + @Override + int size(){ + return size; + } + + @Override + public void enqueue(int value) { + add(value); + } + + @Override + public int dequeu() { + return remove(0); + } + + @Override + public void push(int value) { + add(value); + } + + @Override + public int pop() { + return remove(size - 1); + } + +} \ No newline at end of file diff --git a/src/main/java/track/lessons/lesson3/List.java b/src/main/java/track/lessons/lesson3/List.java index 1c125f28..8ee26065 100644 --- a/src/main/java/track/lessons/lesson3/List.java +++ b/src/main/java/track/lessons/lesson3/List.java @@ -3,13 +3,9 @@ /** * */ -<<<<<<< HEAD public abstract class List { - abstract void add(int item); - abstract int remove(int idx); - abstract int get(int idx); - abstract int size(); -======= -public class List { ->>>>>>> upstream/master -} + abstract void add(int item); + abstract int remove(int idx); + abstract int get(int idx); + abstract int size(); +} \ No newline at end of file diff --git a/src/main/java/track/lessons/lesson3/ListMain.java b/src/main/java/track/lessons/lesson3/ListMain.java index ebff8375..0a9c8b5d 100644 --- a/src/main/java/track/lessons/lesson3/ListMain.java +++ b/src/main/java/track/lessons/lesson3/ListMain.java @@ -6,7 +6,6 @@ public class ListMain { public static void main(String[] args) { -<<<<<<< HEAD LinkedList linkedList = new LinkedList(); for (int i = 0; i < 1000; i++) { @@ -20,15 +19,5 @@ public static void main(String[] args) { for (int i = 0; i < 1000; i++) { dynamicList.add(i); } -======= - - -// List list = new DynamicList(); -// list.add(1); -// list.add(2); -// list.add(10); -// int first = list.remove(0); ->>>>>>> upstream/master - } -} +} \ No newline at end of file From 2891314d761cd4d7a53a22c975f3f8ffc498b98e Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Oct 2016 19:00:35 +0300 Subject: [PATCH 14/36] white --- src/main/java/track/lessons/lesson3/DynamicList.java | 5 +++-- src/main/java/track/lessons/lesson3/LinkedList.java | 12 +++++------- src/main/java/track/lessons/lesson3/Queue.java | 4 ++-- src/main/java/track/lessons/lesson3/Stack.java | 4 ++-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/track/lessons/lesson3/DynamicList.java b/src/main/java/track/lessons/lesson3/DynamicList.java index fc480ccc..349fbce5 100644 --- a/src/main/java/track/lessons/lesson3/DynamicList.java +++ b/src/main/java/track/lessons/lesson3/DynamicList.java @@ -1,7 +1,7 @@ package track.lessons.lesson3; -public class DynamicList extends List{ +public class DynamicList extends List { private static final int DEFAULT_SIZE = 1000; private int[] array; private int size; @@ -12,7 +12,7 @@ public DynamicList() { @Override public void add(int value) { - if(size == array.length) { + if (size == array.length) { allocate(); } array[size++] = value; @@ -31,6 +31,7 @@ public int get(int idx) { valid_index(idx); return array[idx]; } + @Override public int size() { return size; diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java b/src/main/java/track/lessons/lesson3/LinkedList.java index c7249497..be4c4511 100644 --- a/src/main/java/track/lessons/lesson3/LinkedList.java +++ b/src/main/java/track/lessons/lesson3/LinkedList.java @@ -33,8 +33,7 @@ public void add(int item) { newNode.prev = newNode; newNode.next = newNode; first = newNode; - } - else { + } else { newNode.prev = last; newNode.next = first; } @@ -78,8 +77,7 @@ private int removeLast() { if (last.prev != null) { last = last.prev; last.prev.next = null; - } - else { + } else { last = null; } return value; @@ -90,15 +88,14 @@ private int removeFirst() { if(first.next != null) { first = first.next; first.next.prev = null; - } - else { + } else { first = null; } return value; } @Override - int get(int idx){ + int get(int idx) { valid_index(idx); if (idx == 0) { return first.value; @@ -113,6 +110,7 @@ int get(int idx){ } return node.value; } + @Override int size(){ return size; diff --git a/src/main/java/track/lessons/lesson3/Queue.java b/src/main/java/track/lessons/lesson3/Queue.java index b9f3b2d6..f40999d8 100644 --- a/src/main/java/track/lessons/lesson3/Queue.java +++ b/src/main/java/track/lessons/lesson3/Queue.java @@ -1,6 +1,6 @@ package track.lessons.lesson3; -interface Queue { +public interface Queue { void enqueue(int value); - int dequeu(); + int dequeu(); } diff --git a/src/main/java/track/lessons/lesson3/Stack.java b/src/main/java/track/lessons/lesson3/Stack.java index dd5f2d23..a771c07f 100644 --- a/src/main/java/track/lessons/lesson3/Stack.java +++ b/src/main/java/track/lessons/lesson3/Stack.java @@ -1,6 +1,6 @@ package track.lessons.lesson3; -interface Stack { - void push(int value); +public interface Stack { + void push(int value); int pop(); } From 44849f89806d845963e32a04e0723b86cf9c8a4f Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Oct 2016 19:11:39 +0300 Subject: [PATCH 15/36] white --- src/main/java/track/lessons/lesson3/DynamicList.java | 2 +- src/main/java/track/lessons/lesson3/LinkedList.java | 5 +++-- src/main/java/track/lessons/lesson3/List.java | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/track/lessons/lesson3/DynamicList.java b/src/main/java/track/lessons/lesson3/DynamicList.java index 349fbce5..5a6cabc3 100644 --- a/src/main/java/track/lessons/lesson3/DynamicList.java +++ b/src/main/java/track/lessons/lesson3/DynamicList.java @@ -31,7 +31,7 @@ public int get(int idx) { valid_index(idx); return array[idx]; } - + @Override public int size() { return size; diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java b/src/main/java/track/lessons/lesson3/LinkedList.java index be4c4511..a41298e0 100644 --- a/src/main/java/track/lessons/lesson3/LinkedList.java +++ b/src/main/java/track/lessons/lesson3/LinkedList.java @@ -64,6 +64,7 @@ public int remove(int idx) { for (int i = 0; i <= idx; i++) { node = node.next; } + int cur_value = node.value; Node next = new Node(); next = node.next; @@ -85,7 +86,7 @@ private int removeLast() { private int removeFirst() { int value = first.value; - if(first.next != null) { + if (first.next != null) { first = first.next; first.next.prev = null; } else { @@ -112,7 +113,7 @@ int get(int idx) { } @Override - int size(){ + int size() { return size; } diff --git a/src/main/java/track/lessons/lesson3/List.java b/src/main/java/track/lessons/lesson3/List.java index 8ee26065..3f47e2ee 100644 --- a/src/main/java/track/lessons/lesson3/List.java +++ b/src/main/java/track/lessons/lesson3/List.java @@ -5,7 +5,10 @@ */ public abstract class List { abstract void add(int item); + abstract int remove(int idx); + abstract int get(int idx); + abstract int size(); } \ No newline at end of file From 8914837b11c7f9c80455ab551f047f32fe9fd956 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Oct 2016 19:16:16 +0300 Subject: [PATCH 16/36] white --- src/main/java/track/lessons/lesson3/LinkedList.java | 5 ++--- src/main/java/track/lessons/lesson3/Queue.java | 3 ++- src/main/java/track/lessons/lesson3/Stack.java | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java b/src/main/java/track/lessons/lesson3/LinkedList.java index a41298e0..f9e0e62b 100644 --- a/src/main/java/track/lessons/lesson3/LinkedList.java +++ b/src/main/java/track/lessons/lesson3/LinkedList.java @@ -64,13 +64,12 @@ public int remove(int idx) { for (int i = 0; i <= idx; i++) { node = node.next; } - - int cur_value = node.value; + Node next = new Node(); next = node.next; node.prev.next = node.next; next.prev = node.prev; - return cur_value; + return node.value; } private int removeLast() { diff --git a/src/main/java/track/lessons/lesson3/Queue.java b/src/main/java/track/lessons/lesson3/Queue.java index f40999d8..4356ad72 100644 --- a/src/main/java/track/lessons/lesson3/Queue.java +++ b/src/main/java/track/lessons/lesson3/Queue.java @@ -1,6 +1,7 @@ package track.lessons.lesson3; public interface Queue { - void enqueue(int value); + void enqueue(int value); + int dequeu(); } diff --git a/src/main/java/track/lessons/lesson3/Stack.java b/src/main/java/track/lessons/lesson3/Stack.java index a771c07f..98f8b1ba 100644 --- a/src/main/java/track/lessons/lesson3/Stack.java +++ b/src/main/java/track/lessons/lesson3/Stack.java @@ -2,5 +2,6 @@ public interface Stack { void push(int value); + int pop(); } From ca42dfaf8654133df10ea973ae3bceded551de85 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Oct 2016 19:34:17 +0300 Subject: [PATCH 17/36] Parser --- src/main/java/track/lessons/lesson2/Parser.java | 7 ++++--- src/main/java/track/lessons/lesson3/LinkedList.java | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/track/lessons/lesson2/Parser.java b/src/main/java/track/lessons/lesson2/Parser.java index fdea943f..8c8d32cf 100644 --- a/src/main/java/track/lessons/lesson2/Parser.java +++ b/src/main/java/track/lessons/lesson2/Parser.java @@ -5,10 +5,10 @@ public class Parser { Document parse(String data) { + if (data == null) { + return null; + } String[] tokens = data.split("[ ]"); - if (tokens == null) { - return null; - } return new Document(tokens); } @@ -21,6 +21,7 @@ public static void main(String[] args) throws Exception { String line; while ((line = reader.readLine()) != null) { builder.append(line); + builder.append(" "); } String res = builder.toString(); Document doc = pars.parse(res); diff --git a/src/main/java/track/lessons/lesson3/LinkedList.java b/src/main/java/track/lessons/lesson3/LinkedList.java index f9e0e62b..fa1ff1e8 100644 --- a/src/main/java/track/lessons/lesson3/LinkedList.java +++ b/src/main/java/track/lessons/lesson3/LinkedList.java @@ -29,7 +29,7 @@ private boolean isEmpty() { @Override public void add(int item) { Node newNode = new Node(); - if (isEmpty() == true) { + if (isEmpty()) { newNode.prev = newNode; newNode.next = newNode; first = newNode; From c66cd943bce722da7a72f5db429604e582ff2c2c Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 19 Oct 2016 16:35:42 +0300 Subject: [PATCH 18/36] maven --- .../java/track/lessons/lesson4/Reflect.java | 155 ------------------ 1 file changed, 155 deletions(-) diff --git a/src/main/java/track/lessons/lesson4/Reflect.java b/src/main/java/track/lessons/lesson4/Reflect.java index a23bf751..e69de29b 100644 --- a/src/main/java/track/lessons/lesson4/Reflect.java +++ b/src/main/java/track/lessons/lesson4/Reflect.java @@ -1,155 +0,0 @@ -package arhangel.dim.lections.reflection; - -import java.io.Serializable; -import java.lang.annotation.Annotation; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -/** - * - */ -class Test implements Serializable, Cloneable { - private int field; - - public Test() { - - } - - public Test(Object field) { } - - @Deprecated - protected static void method(String[] params) { } - - - public void foo() { - System.out.println("FOO"); - } - - @Override - public String toString() { - return "Test{" + - "field=" + field + - '}'; - } -} - -public class Reflect { - public static void main(String[] args) throws Exception { - Class clazz = Test.class; - Test test = (Test) clazz.newInstance(); - - clazz.getConstructors(); - - // вызвать метод по имени у заданного объекта - Method method = clazz.getMethod("foo"); - System.out.println(method.toString()); - method.invoke(test); - - // установить поле по имени у заданного объекта - Field field0 = clazz.getDeclaredField("field"); - field0.setAccessible(true); - field0.set(test, 100); - System.out.println(test); - - // выводим название пакета - Package pack = clazz.getPackage(); - System.out.println("package " + pack.getName() + ";"); - - // начинаем декларацию класса с модификаторов - int modifiers = clazz.getModifiers(); - System.out.print(getModifiers(modifiers)); - // выводим название класса - System.out.print("class " + clazz.getSimpleName() + " "); - - // выводим название родительского класса - System.out.print("extends " + clazz.getSuperclass().getSimpleName() + " "); - - // выводим интерфейсы, которые реализует класс - Class[] interfaces = clazz.getInterfaces(); - for (int i = 0, size = interfaces.length; i < size; i++) { - System.out.print(i == 0 ? "implements " : ", "); - System.out.print(interfaces[i].getSimpleName()); - } - System.out.println(" {"); - - // выводим поля класса - Field[] fields = clazz.getDeclaredFields(); - for (Field field : fields) { - System.out.println("\t" + getModifiers(field.getModifiers()) + - getType(field.getType()) + " " + field.getName() + ";"); - } - - // выводим констукторы класса - Constructor[] constructors = clazz.getDeclaredConstructors(); - for (Constructor c : constructors) { - System.out.print("\t" + getModifiers(c.getModifiers()) + - clazz.getSimpleName() + "("); - System.out.print(getParameters(c.getParameterTypes())); - System.out.println(") { }"); - } - - // выводим методы класса - Method[] methods = clazz.getDeclaredMethods(); - for (Method m : methods) { - // получаем аннотации - Annotation[] annotations = m.getAnnotations(); - System.out.print("\t"); - for (Annotation a : annotations) { - System.out.print("@" + a.annotationType().getSimpleName() + " "); - } - System.out.println(); - - System.out.print("\t" + getModifiers(m.getModifiers()) + - getType(m.getReturnType()) + " " + m.getName() + "("); - System.out.print(getParameters(m.getParameterTypes())); - System.out.println(") { }"); - } - - System.out.println("}"); - - - } - - static String getModifiers(int mod) { - String modifiers = ""; - if (Modifier.isPublic(mod)) { - modifiers += "public "; - } - if (Modifier.isProtected(mod)) { - modifiers += "protected "; - } - if (Modifier.isPrivate(mod)) { - modifiers += "private "; - } - if (Modifier.isStatic(mod)) { - modifiers += "static "; - } - if (Modifier.isAbstract(mod)) { - modifiers += "abstract "; - } - - return modifiers; - } - - static String getType(Class clazz) { - String type = clazz.isArray() ? clazz.getComponentType().getSimpleName() - : clazz.getSimpleName(); - if (clazz.isArray()) { - type += "[]"; - } - return type; - } - - static String getParameters(Class[] params) { - String param = ""; - for (int i = 0, size = params.length; i < size; i++) { - if (i > 0) { - param += ", "; - } - param += getType(params[i]) + " param" + i; - } - return param; - } -} From 4a29ed98112b7e6340518635ba8f28d783d96e23 Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 19 Oct 2016 16:42:32 +0300 Subject: [PATCH 19/36] maven --- .../java/track/lessons/lesson4/Reflect.java | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) diff --git a/src/main/java/track/lessons/lesson4/Reflect.java b/src/main/java/track/lessons/lesson4/Reflect.java index e69de29b..a23bf751 100644 --- a/src/main/java/track/lessons/lesson4/Reflect.java +++ b/src/main/java/track/lessons/lesson4/Reflect.java @@ -0,0 +1,155 @@ +package arhangel.dim.lections.reflection; + +import java.io.Serializable; +import java.lang.annotation.Annotation; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; + +/** + * + */ +class Test implements Serializable, Cloneable { + private int field; + + public Test() { + + } + + public Test(Object field) { } + + @Deprecated + protected static void method(String[] params) { } + + + public void foo() { + System.out.println("FOO"); + } + + @Override + public String toString() { + return "Test{" + + "field=" + field + + '}'; + } +} + +public class Reflect { + public static void main(String[] args) throws Exception { + Class clazz = Test.class; + Test test = (Test) clazz.newInstance(); + + clazz.getConstructors(); + + // вызвать метод по имени у заданного объекта + Method method = clazz.getMethod("foo"); + System.out.println(method.toString()); + method.invoke(test); + + // установить поле по имени у заданного объекта + Field field0 = clazz.getDeclaredField("field"); + field0.setAccessible(true); + field0.set(test, 100); + System.out.println(test); + + // выводим название пакета + Package pack = clazz.getPackage(); + System.out.println("package " + pack.getName() + ";"); + + // начинаем декларацию класса с модификаторов + int modifiers = clazz.getModifiers(); + System.out.print(getModifiers(modifiers)); + // выводим название класса + System.out.print("class " + clazz.getSimpleName() + " "); + + // выводим название родительского класса + System.out.print("extends " + clazz.getSuperclass().getSimpleName() + " "); + + // выводим интерфейсы, которые реализует класс + Class[] interfaces = clazz.getInterfaces(); + for (int i = 0, size = interfaces.length; i < size; i++) { + System.out.print(i == 0 ? "implements " : ", "); + System.out.print(interfaces[i].getSimpleName()); + } + System.out.println(" {"); + + // выводим поля класса + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + System.out.println("\t" + getModifiers(field.getModifiers()) + + getType(field.getType()) + " " + field.getName() + ";"); + } + + // выводим констукторы класса + Constructor[] constructors = clazz.getDeclaredConstructors(); + for (Constructor c : constructors) { + System.out.print("\t" + getModifiers(c.getModifiers()) + + clazz.getSimpleName() + "("); + System.out.print(getParameters(c.getParameterTypes())); + System.out.println(") { }"); + } + + // выводим методы класса + Method[] methods = clazz.getDeclaredMethods(); + for (Method m : methods) { + // получаем аннотации + Annotation[] annotations = m.getAnnotations(); + System.out.print("\t"); + for (Annotation a : annotations) { + System.out.print("@" + a.annotationType().getSimpleName() + " "); + } + System.out.println(); + + System.out.print("\t" + getModifiers(m.getModifiers()) + + getType(m.getReturnType()) + " " + m.getName() + "("); + System.out.print(getParameters(m.getParameterTypes())); + System.out.println(") { }"); + } + + System.out.println("}"); + + + } + + static String getModifiers(int mod) { + String modifiers = ""; + if (Modifier.isPublic(mod)) { + modifiers += "public "; + } + if (Modifier.isProtected(mod)) { + modifiers += "protected "; + } + if (Modifier.isPrivate(mod)) { + modifiers += "private "; + } + if (Modifier.isStatic(mod)) { + modifiers += "static "; + } + if (Modifier.isAbstract(mod)) { + modifiers += "abstract "; + } + + return modifiers; + } + + static String getType(Class clazz) { + String type = clazz.isArray() ? clazz.getComponentType().getSimpleName() + : clazz.getSimpleName(); + if (clazz.isArray()) { + type += "[]"; + } + return type; + } + + static String getParameters(Class[] params) { + String param = ""; + for (int i = 0, size = params.length; i < size; i++) { + if (i > 0) { + param += ", "; + } + param += getType(params[i]) + " param" + i; + } + return param; + } +} From 5ef8985f75355db74919161b11aebd569e68623b Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 19 Oct 2016 16:45:45 +0300 Subject: [PATCH 20/36] maven --- .../java/track/container/ContainerTest.java | 65 ------------------- 1 file changed, 65 deletions(-) diff --git a/src/test/java/track/container/ContainerTest.java b/src/test/java/track/container/ContainerTest.java index 2123f183..e69de29b 100644 --- a/src/test/java/track/container/ContainerTest.java +++ b/src/test/java/track/container/ContainerTest.java @@ -1,65 +0,0 @@ -package track.container; - -import java.io.File; - -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; - -import track.container.beans.Car; -import track.container.beans.Engine; -import track.container.beans.Gear; -import track.container.config.ConfigReader; -import track.container.config.InvalidConfigurationException; - -/** - * - */ -public class ContainerTest { - - - private static Container container; - - private static Car expectedCar; - private static Gear expectedGear; - private static Engine expectedEngine; - - @BeforeClass - public static void init() { - try { - ClassLoader classLoader = Container.class.getClassLoader(); - File file = new File(classLoader.getResource("config.json").getFile()); - ConfigReader reader = new JsonConfigReader(); - container = new Container(reader.parseBeans(file)); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - } - Assert.assertTrue(container != null); - - expectedEngine = new Engine(); - expectedEngine.setPower(200); - - expectedGear = new Gear(); - expectedGear.setCount(6); - - expectedCar = new Car(); - expectedCar.setEngine(expectedEngine); - expectedCar.setGear(expectedGear); - - } - - @Test - public void testGetByName() throws Exception { - Car car = (Car) container.getById("carBean"); - Assert.assertTrue(car != null); - Assert.assertEquals(expectedCar, car); - } - - @Test - public void testGetByClass() throws Exception { - Car car = (Car) container.getByClass("track.container.beans.Car"); - Assert.assertTrue(car != null); - Assert.assertEquals(expectedCar, car); - } - -} \ No newline at end of file From 752983de27dab373f80a1bab214763bb8e567559 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 17:41:57 +0300 Subject: [PATCH 21/36] container --- src/main/java/track/container/Container.java | 83 +++++++++++++++++-- .../track/container/JsonConfigReader.java | 12 ++- src/main/java/track/container/Main.java | 37 +++++++-- .../java/track/container/ContainerTest.java | 65 +++++++++++++++ 4 files changed, 184 insertions(+), 13 deletions(-) diff --git a/src/main/java/track/container/Container.java b/src/main/java/track/container/Container.java index 36c4bd9d..ba34e088 100644 --- a/src/main/java/track/container/Container.java +++ b/src/main/java/track/container/Container.java @@ -1,8 +1,21 @@ package track.container; +import java.beans.PropertyEditor; +import java.beans.PropertyEditorManager; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Field; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import jdk.nashorn.internal.runtime.regexp.joni.exception.ValueException; import track.container.config.Bean; +import track.container.config.InvalidConfigurationException; +import track.container.config.Property; +import track.container.config.ValueType; + +import static org.apache.log4j.config.PropertyPrinter.capitalize; /** * Основной класс контейнера @@ -10,25 +23,85 @@ */ public class Container { + private Map beanById; + private Map beanByClassName; + private Map objById; + private Map objByClassName; // Реализуйте этот конструктор, используется в тестах! public Container(List beans) { - + beanById = new HashMap<>(); + beanByClassName = new HashMap<>(); + objById = new HashMap<>(); + objByClassName = new HashMap<>(); + for (Bean bean : beans) { + beanById.put(bean.getId(), bean); + beanByClassName.put(bean.getClassName(), bean); + } } /** * Вернуть объект по имени бина из конфига * Например, Car car = (Car) container.getById("carBean") */ - public Object getById(String id) { - return null; + public Object getById(String id) throws InvalidConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException { + Object object = objById.get(id); + if (object == null) { + Bean bean = beanById.get(id); + if (bean != null) { + object = createObject(bean); + } + else { + throw new InvalidConfigurationException("Bean without id"); + } + } + + return object; } /** * Вернуть объект по имени класса * Например, Car car = (Car) container.getByClass("track.container.beans.Car") */ - public Object getByClass(String className) { - return null; + public Object getByClass(String className) throws InvalidConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException { + Object object = objByClassName.get(className); + + if (object == null) { + Bean bean = beanByClassName.get(className); + if (bean != null) { + object = createObject(bean); + } + else { + throw new InvalidConfigurationException("Bean without class"); + } + } + + return object; + } + + private Object createObject(Bean bean) throws ValueException, NoSuchFieldException, NoSuchMethodException, ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException { + Class clazz = Class.forName(bean.getClassName()); + Object object = clazz.newInstance(); + objById.put(bean.getId(), object); + for (Map.Entry entry : bean.getProperties().entrySet()) { + Property property = entry.getValue(); + Field field = clazz.getDeclaredField(property.getName()); + Class type = field.getType(); + Method set = clazz.getMethod(getSetName(property.getName()), type); + if (property.getType() == ValueType.VAL) { + set.invoke(object, Integer.parseInt(property.getValue())); + } else if(property.getType() == ValueType.REF) { + if (!objById.containsKey(beanById.get(property.getValue()))) { + createObject(beanById.get(property.getValue())); + } + set.invoke(object, objById.get(beanById.get(property.getValue()))); + } + + } + return object; + } + + private String getSetName(String line) { + return "set" + Character.toUpperCase(line.charAt(0)) + line.substring(1); } } diff --git a/src/main/java/track/container/JsonConfigReader.java b/src/main/java/track/container/JsonConfigReader.java index 76eb69ff..a483831b 100644 --- a/src/main/java/track/container/JsonConfigReader.java +++ b/src/main/java/track/container/JsonConfigReader.java @@ -1,11 +1,14 @@ package track.container; import java.io.File; +import java.io.IOException; import java.util.List; +import com.fasterxml.jackson.databind.ObjectMapper; import track.container.config.Bean; import track.container.config.ConfigReader; import track.container.config.InvalidConfigurationException; +import track.container.config.Root; /** * TODO: Реализовать @@ -14,6 +17,13 @@ public class JsonConfigReader implements ConfigReader { @Override public List parseBeans(File configFile) throws InvalidConfigurationException { - return null; + try { + ObjectMapper objectMapper = new ObjectMapper(); + Root root = objectMapper.readValue(configFile, Root.class); + + return root.getBeans(); + } catch (IOException e) { + throw new InvalidConfigurationException(e.toString()); + } } } diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index 8fdc23e6..1d3e66d7 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -1,11 +1,25 @@ package track.container; +import jdk.nashorn.internal.runtime.regexp.joni.exception.ValueException; +import track.container.beans.Car; +import track.container.config.Bean; +import track.container.config.ConfigReader; +import track.container.config.InvalidConfigurationException; + +import java.lang.reflect.InvocationTargetException; +import java.util.List; +import java.lang.String; + +import java.io.File; + +import static org.apache.log4j.helpers.Loader.getResource; + /** * */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws ValueException, NoSuchFieldException, NoSuchMethodException, ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException, InvalidConfigurationException { /* @@ -14,12 +28,21 @@ public static void main(String[] args) { */ // // При чтении нужно обработать исключение -// ConfigReader reader = new JsonReader(); -// List beans = reader.parseBeans("config.json"); -// Container container = new Container(beans); -// -// Car car = (Car) container.getByClass("track.container.beans.Car"); -// car = (Car) container.getById("carBean"); + File file = new File(getResource("config.json").getFile()); + ConfigReader reader = new JsonConfigReader(); + List beans; + try { + beans = reader.parseBeans(file); + System.out.print(beans.toString()); + Container container = new Container(beans); + Car car = (Car) container.getByClass("track.container.beans.Car"); + } catch (InvalidConfigurationException exception) { + System.out.println(exception.getMessage()); + } catch (InstantiationException | InvocationTargetException | IllegalAccessException | + NoSuchMethodException | ClassNotFoundException e) { + e.printStackTrace(); + } + } diff --git a/src/test/java/track/container/ContainerTest.java b/src/test/java/track/container/ContainerTest.java index e69de29b..2123f183 100644 --- a/src/test/java/track/container/ContainerTest.java +++ b/src/test/java/track/container/ContainerTest.java @@ -0,0 +1,65 @@ +package track.container; + +import java.io.File; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import track.container.beans.Car; +import track.container.beans.Engine; +import track.container.beans.Gear; +import track.container.config.ConfigReader; +import track.container.config.InvalidConfigurationException; + +/** + * + */ +public class ContainerTest { + + + private static Container container; + + private static Car expectedCar; + private static Gear expectedGear; + private static Engine expectedEngine; + + @BeforeClass + public static void init() { + try { + ClassLoader classLoader = Container.class.getClassLoader(); + File file = new File(classLoader.getResource("config.json").getFile()); + ConfigReader reader = new JsonConfigReader(); + container = new Container(reader.parseBeans(file)); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + Assert.assertTrue(container != null); + + expectedEngine = new Engine(); + expectedEngine.setPower(200); + + expectedGear = new Gear(); + expectedGear.setCount(6); + + expectedCar = new Car(); + expectedCar.setEngine(expectedEngine); + expectedCar.setGear(expectedGear); + + } + + @Test + public void testGetByName() throws Exception { + Car car = (Car) container.getById("carBean"); + Assert.assertTrue(car != null); + Assert.assertEquals(expectedCar, car); + } + + @Test + public void testGetByClass() throws Exception { + Car car = (Car) container.getByClass("track.container.beans.Car"); + Assert.assertTrue(car != null); + Assert.assertEquals(expectedCar, car); + } + +} \ No newline at end of file From a128448ca4e0dddf7cf053f08a1ba9672684de0e Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 17:50:37 +0300 Subject: [PATCH 22/36] container --- src/main/java/track/container/Container.java | 5 ++--- src/main/java/track/lessons/lesson8/IoUtil.java | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/track/container/Container.java b/src/main/java/track/container/Container.java index ba34e088..aff91d26 100644 --- a/src/main/java/track/container/Container.java +++ b/src/main/java/track/container/Container.java @@ -68,9 +68,8 @@ public Object getByClass(String className) throws InvalidConfigurationException, if (object == null) { Bean bean = beanByClassName.get(className); - if (bean != null) { + if (bean != null) object = createObject(bean); - } else { throw new InvalidConfigurationException("Bean without class"); } @@ -90,7 +89,7 @@ private Object createObject(Bean bean) throws ValueException, NoSuchFieldExcepti Method set = clazz.getMethod(getSetName(property.getName()), type); if (property.getType() == ValueType.VAL) { set.invoke(object, Integer.parseInt(property.getValue())); - } else if(property.getType() == ValueType.REF) { + } else if (property.getType() == ValueType.REF) { if (!objById.containsKey(beanById.get(property.getValue()))) { createObject(beanById.get(property.getValue())); } diff --git a/src/main/java/track/lessons/lesson8/IoUtil.java b/src/main/java/track/lessons/lesson8/IoUtil.java index 075ddcaa..41041df4 100644 --- a/src/main/java/track/lessons/lesson8/IoUtil.java +++ b/src/main/java/track/lessons/lesson8/IoUtil.java @@ -1,4 +1,5 @@ package track.lessons.lesson8; + import java.io.Closeable; public class IoUtil { From 9957554ef5da6a0691e4cee238f5d3067da14e98 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 17:52:01 +0300 Subject: [PATCH 23/36] container --- src/main/java/track/container/Container.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/track/container/Container.java b/src/main/java/track/container/Container.java index aff91d26..c3e4237a 100644 --- a/src/main/java/track/container/Container.java +++ b/src/main/java/track/container/Container.java @@ -50,8 +50,7 @@ public Object getById(String id) throws InvalidConfigurationException, ClassNotF Bean bean = beanById.get(id); if (bean != null) { object = createObject(bean); - } - else { + } else { throw new InvalidConfigurationException("Bean without id"); } } @@ -68,8 +67,9 @@ public Object getByClass(String className) throws InvalidConfigurationException, if (object == null) { Bean bean = beanByClassName.get(className); - if (bean != null) + if (bean != null) { object = createObject(bean); + } else { throw new InvalidConfigurationException("Bean without class"); } From cc2e8fab3400f92662efb5a6397fc8165f6e64e2 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 17:56:03 +0300 Subject: [PATCH 24/36] container with right whitespaces --- src/main/java/track/container/Container.java | 3 +-- src/main/java/track/container/Main.java | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/track/container/Container.java b/src/main/java/track/container/Container.java index c3e4237a..cdb741a3 100644 --- a/src/main/java/track/container/Container.java +++ b/src/main/java/track/container/Container.java @@ -69,8 +69,7 @@ public Object getByClass(String className) throws InvalidConfigurationException, Bean bean = beanByClassName.get(className); if (bean != null) { object = createObject(bean); - } - else { + } else { throw new InvalidConfigurationException("Bean without class"); } } diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index 1d3e66d7..e3377e0f 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -2,6 +2,8 @@ import jdk.nashorn.internal.runtime.regexp.joni.exception.ValueException; import track.container.beans.Car; +import track.container.beans.Engine; +import track.container.beans.Gear; import track.container.config.Bean; import track.container.config.ConfigReader; import track.container.config.InvalidConfigurationException; @@ -36,6 +38,8 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti System.out.print(beans.toString()); Container container = new Container(beans); Car car = (Car) container.getByClass("track.container.beans.Car"); + Engine engine = (Engine) container.getByClass("track.container.beans.Car"); + Gear gear = (Gear) container.getByClass("track.container.beans.Car"); } catch (InvalidConfigurationException exception) { System.out.println(exception.getMessage()); } catch (InstantiationException | InvocationTargetException | IllegalAccessException | From b5a84a4f12092cb7e42342f1b76bcdabbd622d64 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 18:03:24 +0300 Subject: [PATCH 25/36] bean --- src/main/java/track/container/config/Bean.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/track/container/config/Bean.java b/src/main/java/track/container/config/Bean.java index b7948199..ad22d5e6 100644 --- a/src/main/java/track/container/config/Bean.java +++ b/src/main/java/track/container/config/Bean.java @@ -19,6 +19,9 @@ public class Bean { */ private Map properties; // Набор полей бина ИмяПоля-Значение + public Bean() { + } + public Bean(String id, String className, Map properties) { this.id = id; this.className = className; From 8349845b22231506bd00aa00d65f596202fff580 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 19:45:07 +0300 Subject: [PATCH 26/36] jsonparser --- src/main/java/track/container/Container.java | 4 +- .../track/container/JsonConfigReader.java | 52 +++++++++++++++---- src/main/java/track/container/Main.java | 5 +- .../java/track/container/config/Bean.java | 3 -- 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/main/java/track/container/Container.java b/src/main/java/track/container/Container.java index cdb741a3..74e82330 100644 --- a/src/main/java/track/container/Container.java +++ b/src/main/java/track/container/Container.java @@ -26,14 +26,12 @@ public class Container { private Map beanById; private Map beanByClassName; private Map objById; - private Map objByClassName; // Реализуйте этот конструктор, используется в тестах! public Container(List beans) { beanById = new HashMap<>(); beanByClassName = new HashMap<>(); objById = new HashMap<>(); - objByClassName = new HashMap<>(); for (Bean bean : beans) { beanById.put(bean.getId(), bean); beanByClassName.put(bean.getClassName(), bean); @@ -63,7 +61,7 @@ public Object getById(String id) throws InvalidConfigurationException, ClassNotF * Например, Car car = (Car) container.getByClass("track.container.beans.Car") */ public Object getByClass(String className) throws InvalidConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException { - Object object = objByClassName.get(className); + Object object = objById.get(className); if (object == null) { Bean bean = beanByClassName.get(className); diff --git a/src/main/java/track/container/JsonConfigReader.java b/src/main/java/track/container/JsonConfigReader.java index a483831b..b09998d1 100644 --- a/src/main/java/track/container/JsonConfigReader.java +++ b/src/main/java/track/container/JsonConfigReader.java @@ -2,28 +2,60 @@ import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import track.container.config.Bean; -import track.container.config.ConfigReader; -import track.container.config.InvalidConfigurationException; -import track.container.config.Root; +import track.container.config.*; /** * TODO: Реализовать */ public class JsonConfigReader implements ConfigReader { + private Property parseProperty(JsonNode property) throws InvalidConfigurationException { + String name = property.get("name").asText(); + ValueType type; + String value = property.get("value").asText(); + if (property.get("type").asText().equals("REF")) { + type = ValueType.REF; + } else { + type = ValueType.VAL; + } + + return new Property(name, value, type); + } + + private Bean parseBean(JsonNode bean) throws InvalidConfigurationException { + String id = bean.get("id").asText(); + String className = bean.get("className").asText(); + Map properties = new HashMap(); + for (JsonNode property: bean.get("properties")) { + Property parsedProperty = parseProperty(property); + properties.put(parsedProperty.getName(), parsedProperty); + } + + return new Bean(id, className, properties); + } + @Override public List parseBeans(File configFile) throws InvalidConfigurationException { + ObjectMapper objectMapper = new ObjectMapper(); + List beans = new ArrayList<>(); try { - ObjectMapper objectMapper = new ObjectMapper(); - Root root = objectMapper.readValue(configFile, Root.class); - - return root.getBeans(); - } catch (IOException e) { - throw new InvalidConfigurationException(e.toString()); + JsonNode root = objectMapper.readTree(configFile); + for (JsonNode bean : root.get("beans")) { + beans.add(parseBean(bean)); + } } + catch (InvalidConfigurationException | IOException e) { + e.printStackTrace(); + } + return beans; } } + + diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index e3377e0f..4ca40322 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -32,14 +32,11 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti // // При чтении нужно обработать исключение File file = new File(getResource("config.json").getFile()); ConfigReader reader = new JsonConfigReader(); - List beans; try { - beans = reader.parseBeans(file); + List beans = reader.parseBeans(file); System.out.print(beans.toString()); Container container = new Container(beans); Car car = (Car) container.getByClass("track.container.beans.Car"); - Engine engine = (Engine) container.getByClass("track.container.beans.Car"); - Gear gear = (Gear) container.getByClass("track.container.beans.Car"); } catch (InvalidConfigurationException exception) { System.out.println(exception.getMessage()); } catch (InstantiationException | InvocationTargetException | IllegalAccessException | diff --git a/src/main/java/track/container/config/Bean.java b/src/main/java/track/container/config/Bean.java index ad22d5e6..b7948199 100644 --- a/src/main/java/track/container/config/Bean.java +++ b/src/main/java/track/container/config/Bean.java @@ -19,9 +19,6 @@ public class Bean { */ private Map properties; // Набор полей бина ИмяПоля-Значение - public Bean() { - } - public Bean(String id, String className, Map properties) { this.id = id; this.className = className; From e4169dec5d011f3a383b80cea14b0c88d2352239 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 19:46:28 +0300 Subject: [PATCH 27/36] } again! --- src/main/java/track/container/JsonConfigReader.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/track/container/JsonConfigReader.java b/src/main/java/track/container/JsonConfigReader.java index b09998d1..94d9f977 100644 --- a/src/main/java/track/container/JsonConfigReader.java +++ b/src/main/java/track/container/JsonConfigReader.java @@ -50,8 +50,7 @@ public List parseBeans(File configFile) throws InvalidConfigurationExcepti for (JsonNode bean : root.get("beans")) { beans.add(parseBean(bean)); } - } - catch (InvalidConfigurationException | IOException e) { + } catch (InvalidConfigurationException | IOException e) { e.printStackTrace(); } return beans; From b84c24765a9417fc32081691f0411f5d97fad5d4 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:00:06 +0300 Subject: [PATCH 28/36] test --- pom.xml | 5 +++++ src/main/java/track/container/Main.java | 30 ++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index ffe9eeed..1b6a5846 100644 --- a/pom.xml +++ b/pom.xml @@ -120,6 +120,11 @@ jackson-databind LATEST + + junit + junit + RELEASE + diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index 4ca40322..eaca6df4 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -1,6 +1,7 @@ package track.container; import jdk.nashorn.internal.runtime.regexp.joni.exception.ValueException; +import org.junit.Assert; import track.container.beans.Car; import track.container.beans.Engine; import track.container.beans.Gear; @@ -28,23 +29,32 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti ПРИМЕР ИСПОЛЬЗОВАНИЯ */ + Container container = null; + Car expectedCar; + Gear expectedGear; + Engine expectedEngine; // // При чтении нужно обработать исключение - File file = new File(getResource("config.json").getFile()); - ConfigReader reader = new JsonConfigReader(); try { - List beans = reader.parseBeans(file); - System.out.print(beans.toString()); - Container container = new Container(beans); - Car car = (Car) container.getByClass("track.container.beans.Car"); - } catch (InvalidConfigurationException exception) { - System.out.println(exception.getMessage()); - } catch (InstantiationException | InvocationTargetException | IllegalAccessException | - NoSuchMethodException | ClassNotFoundException e) { + ClassLoader classLoader = Container.class.getClassLoader(); + File file = new File(classLoader.getResource("config.json").getFile()); + ConfigReader reader = new JsonConfigReader(); + container = new Container(reader.parseBeans(file)); + } catch (InvalidConfigurationException e) { e.printStackTrace(); } + Assert.assertTrue(container != null); + expectedEngine = new Engine(); + expectedEngine.setPower(200); + + expectedGear = new Gear(); + expectedGear.setCount(6); + + expectedCar = new Car(); + expectedCar.setEngine(expectedEngine); + expectedCar.setGear(expectedGear); } } From 59aaecbf7536283207384b058b9a050d1c3ab334 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:02:11 +0300 Subject: [PATCH 29/36] test --- pom.xml | 5 ----- src/main/java/track/container/Main.java | 30 +++++++++---------------- 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 1b6a5846..ffe9eeed 100644 --- a/pom.xml +++ b/pom.xml @@ -120,11 +120,6 @@ jackson-databind LATEST - - junit - junit - RELEASE - diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index eaca6df4..4ca40322 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -1,7 +1,6 @@ package track.container; import jdk.nashorn.internal.runtime.regexp.joni.exception.ValueException; -import org.junit.Assert; import track.container.beans.Car; import track.container.beans.Engine; import track.container.beans.Gear; @@ -29,32 +28,23 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti ПРИМЕР ИСПОЛЬЗОВАНИЯ */ - Container container = null; - Car expectedCar; - Gear expectedGear; - Engine expectedEngine; // // При чтении нужно обработать исключение + File file = new File(getResource("config.json").getFile()); + ConfigReader reader = new JsonConfigReader(); try { - ClassLoader classLoader = Container.class.getClassLoader(); - File file = new File(classLoader.getResource("config.json").getFile()); - ConfigReader reader = new JsonConfigReader(); - container = new Container(reader.parseBeans(file)); - } catch (InvalidConfigurationException e) { + List beans = reader.parseBeans(file); + System.out.print(beans.toString()); + Container container = new Container(beans); + Car car = (Car) container.getByClass("track.container.beans.Car"); + } catch (InvalidConfigurationException exception) { + System.out.println(exception.getMessage()); + } catch (InstantiationException | InvocationTargetException | IllegalAccessException | + NoSuchMethodException | ClassNotFoundException e) { e.printStackTrace(); } - Assert.assertTrue(container != null); - expectedEngine = new Engine(); - expectedEngine.setPower(200); - - expectedGear = new Gear(); - expectedGear.setCount(6); - - expectedCar = new Car(); - expectedCar.setEngine(expectedEngine); - expectedCar.setGear(expectedGear); } } From 7f69f63b9b67ea963d3fdc4fbe0391d5d3568445 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:09:07 +0300 Subject: [PATCH 30/36] test --- src/main/java/track/container/Main.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index 4ca40322..dd491d05 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -36,12 +36,8 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti List beans = reader.parseBeans(file); System.out.print(beans.toString()); Container container = new Container(beans); - Car car = (Car) container.getByClass("track.container.beans.Car"); } catch (InvalidConfigurationException exception) { System.out.println(exception.getMessage()); - } catch (InstantiationException | InvocationTargetException | IllegalAccessException | - NoSuchMethodException | ClassNotFoundException e) { - e.printStackTrace(); } From b14f8b32db388e50ad18127c97f4f91a6b291b32 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:11:45 +0300 Subject: [PATCH 31/36] test --- .../java/track/container/ContainerTest.java | 65 ------------------- 1 file changed, 65 deletions(-) diff --git a/src/test/java/track/container/ContainerTest.java b/src/test/java/track/container/ContainerTest.java index 2123f183..e69de29b 100644 --- a/src/test/java/track/container/ContainerTest.java +++ b/src/test/java/track/container/ContainerTest.java @@ -1,65 +0,0 @@ -package track.container; - -import java.io.File; - -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; - -import track.container.beans.Car; -import track.container.beans.Engine; -import track.container.beans.Gear; -import track.container.config.ConfigReader; -import track.container.config.InvalidConfigurationException; - -/** - * - */ -public class ContainerTest { - - - private static Container container; - - private static Car expectedCar; - private static Gear expectedGear; - private static Engine expectedEngine; - - @BeforeClass - public static void init() { - try { - ClassLoader classLoader = Container.class.getClassLoader(); - File file = new File(classLoader.getResource("config.json").getFile()); - ConfigReader reader = new JsonConfigReader(); - container = new Container(reader.parseBeans(file)); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - } - Assert.assertTrue(container != null); - - expectedEngine = new Engine(); - expectedEngine.setPower(200); - - expectedGear = new Gear(); - expectedGear.setCount(6); - - expectedCar = new Car(); - expectedCar.setEngine(expectedEngine); - expectedCar.setGear(expectedGear); - - } - - @Test - public void testGetByName() throws Exception { - Car car = (Car) container.getById("carBean"); - Assert.assertTrue(car != null); - Assert.assertEquals(expectedCar, car); - } - - @Test - public void testGetByClass() throws Exception { - Car car = (Car) container.getByClass("track.container.beans.Car"); - Assert.assertTrue(car != null); - Assert.assertEquals(expectedCar, car); - } - -} \ No newline at end of file From 4a2901ffd90df7e09773b4e1a2649072b64bb54d Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:12:51 +0300 Subject: [PATCH 32/36] test --- .../java/track/container/ContainerTest.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/test/java/track/container/ContainerTest.java b/src/test/java/track/container/ContainerTest.java index e69de29b..2123f183 100644 --- a/src/test/java/track/container/ContainerTest.java +++ b/src/test/java/track/container/ContainerTest.java @@ -0,0 +1,65 @@ +package track.container; + +import java.io.File; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import track.container.beans.Car; +import track.container.beans.Engine; +import track.container.beans.Gear; +import track.container.config.ConfigReader; +import track.container.config.InvalidConfigurationException; + +/** + * + */ +public class ContainerTest { + + + private static Container container; + + private static Car expectedCar; + private static Gear expectedGear; + private static Engine expectedEngine; + + @BeforeClass + public static void init() { + try { + ClassLoader classLoader = Container.class.getClassLoader(); + File file = new File(classLoader.getResource("config.json").getFile()); + ConfigReader reader = new JsonConfigReader(); + container = new Container(reader.parseBeans(file)); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + Assert.assertTrue(container != null); + + expectedEngine = new Engine(); + expectedEngine.setPower(200); + + expectedGear = new Gear(); + expectedGear.setCount(6); + + expectedCar = new Car(); + expectedCar.setEngine(expectedEngine); + expectedCar.setGear(expectedGear); + + } + + @Test + public void testGetByName() throws Exception { + Car car = (Car) container.getById("carBean"); + Assert.assertTrue(car != null); + Assert.assertEquals(expectedCar, car); + } + + @Test + public void testGetByClass() throws Exception { + Car car = (Car) container.getByClass("track.container.beans.Car"); + Assert.assertTrue(car != null); + Assert.assertEquals(expectedCar, car); + } + +} \ No newline at end of file From bd881f1791973e112c186291aca5eef28166626f Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:16:17 +0300 Subject: [PATCH 33/36] test --- src/test/java/track/container/ContainerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/track/container/ContainerTest.java b/src/test/java/track/container/ContainerTest.java index 2123f183..a69d9aef 100644 --- a/src/test/java/track/container/ContainerTest.java +++ b/src/test/java/track/container/ContainerTest.java @@ -37,10 +37,10 @@ public static void init() { Assert.assertTrue(container != null); expectedEngine = new Engine(); - expectedEngine.setPower(200); + //expectedEngine.setPower(200); expectedGear = new Gear(); - expectedGear.setCount(6); + //expectedGear.setCount(6); expectedCar = new Car(); expectedCar.setEngine(expectedEngine); From 407ca5d2496f967895539c2b6870dcb0c322f7e5 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:53:02 +0300 Subject: [PATCH 34/36] map and id --- pom.xml | 5 +++++ src/main/java/track/container/Container.java | 4 ++-- src/main/java/track/container/Main.java | 16 +++++++++++++++- src/test/java/track/container/ContainerTest.java | 4 ++-- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index ffe9eeed..1b6a5846 100644 --- a/pom.xml +++ b/pom.xml @@ -120,6 +120,11 @@ jackson-databind LATEST + + junit + junit + RELEASE + diff --git a/src/main/java/track/container/Container.java b/src/main/java/track/container/Container.java index 74e82330..feffb989 100644 --- a/src/main/java/track/container/Container.java +++ b/src/main/java/track/container/Container.java @@ -25,7 +25,7 @@ public class Container { private Map beanById; private Map beanByClassName; - private Map objById; + private Map objById; // Реализуйте этот конструктор, используется в тестах! public Container(List beans) { @@ -78,7 +78,7 @@ public Object getByClass(String className) throws InvalidConfigurationException, private Object createObject(Bean bean) throws ValueException, NoSuchFieldException, NoSuchMethodException, ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException { Class clazz = Class.forName(bean.getClassName()); Object object = clazz.newInstance(); - objById.put(bean.getId(), object); + objById.put(bean, object); for (Map.Entry entry : bean.getProperties().entrySet()) { Property property = entry.getValue(); Field field = clazz.getDeclaredField(property.getName()); diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index dd491d05..2e19a5e5 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -1,6 +1,7 @@ package track.container; import jdk.nashorn.internal.runtime.regexp.joni.exception.ValueException; +import org.junit.Assert; import track.container.beans.Car; import track.container.beans.Engine; import track.container.beans.Gear; @@ -34,8 +35,21 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti ConfigReader reader = new JsonConfigReader(); try { List beans = reader.parseBeans(file); - System.out.print(beans.toString()); + //System.out.print(beans.toString()); Container container = new Container(beans); + Engine engine = new Engine(); + engine.setPower(200); + + Gear gear = new Gear(); + gear.setCount(6); + + Car car = new Car(); + car.setEngine(engine); + car.setGear(gear); + + Car newcar = (Car) container.getById("carBean"); + System.out.println(newcar.toString()); + } catch (InvalidConfigurationException exception) { System.out.println(exception.getMessage()); } diff --git a/src/test/java/track/container/ContainerTest.java b/src/test/java/track/container/ContainerTest.java index a69d9aef..2123f183 100644 --- a/src/test/java/track/container/ContainerTest.java +++ b/src/test/java/track/container/ContainerTest.java @@ -37,10 +37,10 @@ public static void init() { Assert.assertTrue(container != null); expectedEngine = new Engine(); - //expectedEngine.setPower(200); + expectedEngine.setPower(200); expectedGear = new Gear(); - //expectedGear.setCount(6); + expectedGear.setCount(6); expectedCar = new Car(); expectedCar.setEngine(expectedEngine); From b23690c743adbfe0272501d920b335f77d656853 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:55:14 +0300 Subject: [PATCH 35/36] map and id and relax --- src/main/java/track/container/Main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index 2e19a5e5..3aef135c 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -36,7 +36,7 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti try { List beans = reader.parseBeans(file); //System.out.print(beans.toString()); - Container container = new Container(beans); + Container contain = new Container(beans); Engine engine = new Engine(); engine.setPower(200); @@ -47,7 +47,7 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti car.setEngine(engine); car.setGear(gear); - Car newcar = (Car) container.getById("carBean"); + Car newcar = (Car) contain.getById("carBean"); System.out.println(newcar.toString()); } catch (InvalidConfigurationException exception) { From c9f5274d14153c71bbf9317136dcc4e0c2a6aede Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 3 Nov 2016 20:57:17 +0300 Subject: [PATCH 36/36] no self test --- src/main/java/track/container/Main.java | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java index 3aef135c..8f6abf02 100644 --- a/src/main/java/track/container/Main.java +++ b/src/main/java/track/container/Main.java @@ -35,20 +35,7 @@ public static void main(String[] args) throws ValueException, NoSuchFieldExcepti ConfigReader reader = new JsonConfigReader(); try { List beans = reader.parseBeans(file); - //System.out.print(beans.toString()); - Container contain = new Container(beans); - Engine engine = new Engine(); - engine.setPower(200); - - Gear gear = new Gear(); - gear.setCount(6); - - Car car = new Car(); - car.setEngine(engine); - car.setGear(gear); - - Car newcar = (Car) contain.getById("carBean"); - System.out.println(newcar.toString()); + System.out.print(beans.toString()); } catch (InvalidConfigurationException exception) { System.out.println(exception.getMessage());