diff --git a/.gitignore b/.gitignore index 21b4487..a97d5a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ # Project exclude paths -/out/ \ No newline at end of file +/out/ +/.idea/ +/tmpDB.db +/target/ \ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 70c42e6..fa6975e 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -5,7 +5,7 @@ sqlite.xerial true org.sqlite.JDBC - jdbc:sqlite:C:\Users\Mikhail\IdeaProjects\Java3\homework.db + jdbc:sqlite:C:\Geekbrains\Java3\homework.db file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.25.1/license.txt @@ -20,9 +20,6 @@ true org.sqlite.JDBC jdbc:sqlite:$PROJECT_DIR$/tmpDB.db - - - sqlite.xerial @@ -44,5 +41,19 @@ org.sqlite.JDBC jdbc:sqlite:classwork.db + + sqlite.xerial + true + org.sqlite.JDBC + jdbc:sqlite:C:\Geekbrains\Java3\homework.db + + + file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.25.1/license.txt + + + file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.25.1/sqlite-jdbc-3.25.1.jar + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_6_0_RC1.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_6_0_RC1.xml deleted file mode 100644 index f8bf2aa..0000000 --- a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_6_0_RC1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_0_RC1.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_0_RC1.xml deleted file mode 100644 index 4d72560..0000000 --- a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_0_RC1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_0_RC1.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_0_RC1.xml deleted file mode 100644 index 1d54e61..0000000 --- a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_0_RC1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_0_RC1.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_0_RC1.xml deleted file mode 100644 index a5016bb..0000000 --- a/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_0_RC1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_0_RC1.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_0_RC1.xml deleted file mode 100644 index a74d90f..0000000 --- a/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_0_RC1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/homework.db b/homework.db index 255eaf1..7b7b3f4 100644 Binary files a/homework.db and b/homework.db differ diff --git a/task2/src/main/java/DBUtility.java b/task2/src/main/java/DBUtility.java index 0e67b06..dcc950d 100644 --- a/task2/src/main/java/DBUtility.java +++ b/task2/src/main/java/DBUtility.java @@ -18,22 +18,42 @@ public class DBUtility { */ - void AddPrinters(Statement stmt){ - // TODO: 16.12.2019 + void AddPrinters(Statement stmt) throws SQLException { + ArrayList printers = new ArrayList<>(); + Printer printer1 = new Printer(1012,"HP", "col", "laser", 20000); + Printer printer2 = new Printer(1010,"Canon", "bw", "jet", 5000); + Printer printer3 = new Printer(1010,"Canon", "bw", "jet", 5000); + printers.add(printer1); + printers.add(printer2); + printers.add(printer3); + + for (Printer printer : printers) { + stmt.addBatch("INSERT INTO Printer (model, maker, color, type, price) VALUES (" + printer.getModel() + + ", '" + printer.getMaker() + "', '" + printer.getColor() + "', '" + printer.getType() + + "', " + printer.getPrice() + ");"); + } + stmt.executeBatch(); } - public void createPrinterTable(Connection con, Statement stmt){ - // TODO: 16.12.2019 + public void createPrinterTable(Connection con, Statement stmt) throws SQLException { + stmt.execute("CREATE TABLE IF NOT EXISTS " + + "Printer (id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE " + + ", model INTEGER, maker TEXT, color TEXT, type TEXT, price INTEGER)"); + AddPrinters(stmt); } /* * Метод должен вернуть список уникальных моделей PC дороже 15 тысяч */ - public ArrayList selectExpensivePC(Statement stmt){ - //todo - return null; + public ArrayList selectExpensivePC(Statement stmt) throws SQLException { + ArrayList models = new ArrayList<>(); + ResultSet rs = stmt.executeQuery("select distinct p.model from pc p where p.price > 15000"); + while (rs.next()) { + models.add(rs.getString("model")); + } + return models; } /* @@ -41,18 +61,27 @@ public ArrayList selectExpensivePC(Statement stmt){ * которых выше чем 2500 */ - public ArrayList selectQuickLaptop(Statement stmt) { - // TODO: 16.12.2019 - return null; + public ArrayList selectQuickLaptop(Statement stmt) throws SQLException { + ArrayList ids = new ArrayList<>(); + ResultSet rs = stmt.executeQuery("SELECT l.id from Laptop l where l.speed > 2500"); + while (rs.next()) { + ids.add(rs.getInt("id")); + } + return ids; } /* * Метод должен вернуть список производителей которые * делают и пк и ноутбуки */ - public ArrayList selectMaker(Statement stmt){ + public ArrayList selectMaker(Statement stmt) throws SQLException { ArrayList ans = new ArrayList<>(); - // TODO: 18.02.2020 + ResultSet rs = stmt.executeQuery("SELECT DISTINCT pr.maker from Product pr, (" + + "SELECT p.maker from Product p where p.type = 'PC' and p.type <> 'Laptop') p " + + "where pr.type = 'Laptop' and pr.maker = p.maker"); + while (rs.next()) { + ans.add(rs.getString("maker")); + } return ans; } @@ -65,9 +94,18 @@ public ArrayList selectMaker(Statement stmt){ * или сделать любым другим способом */ - public int makerWithMaxProceeds(Statement stmt){ + public int makerWithMaxProceeds(Statement stmt) throws SQLException { int result = 0; - //todo + ResultSet rs = stmt.executeQuery("select max(m.sum) summ from (select sum(m.price) sum, p.maker from " + + "(SELECT pc.price, pc.model from PC pc\n" + + "UNION ALL\n" + + "SELECT l.price, l.model from Laptop l) m,\n" + + "(SELECT p.* FROM Product p GROUP by p.model) p\n" + + "where m.model = p.model\n" + + "group by p.maker) m"); + while (rs.next()) { + result = rs.getInt("summ"); + } return result; } diff --git a/task2/src/test/java/DBTests.java b/task2/src/test/java/DBTests.java index 64d94e4..fc47c76 100644 --- a/task2/src/test/java/DBTests.java +++ b/task2/src/test/java/DBTests.java @@ -19,7 +19,7 @@ public void starter() { try { util = new DBUtility(); Class.forName("org.sqlite.JDBC"); - con = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Mikhail\\IdeaProjects\\Java31\\homework.db"); + con = DriverManager.getConnection("jdbc:sqlite:C:\\Geekbrains\\Java3\\homework.db"); stmt = con.createStatement(); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); @@ -47,28 +47,28 @@ public void testTable() throws SQLException { } @Test - public void testExpensivePC(){ + public void testExpensivePC() throws SQLException { ArrayList list = util.selectExpensivePC(stmt); list.sort(Comparator.comparing(o->o)); Assert.assertArrayEquals(new String[]{"2205", "2210"}, list.toArray()); } @Test - public void testQuickLaptop(){ + public void testQuickLaptop() throws SQLException { ArrayList list = util.selectQuickLaptop(stmt); Collections.sort(list); Assert.assertArrayEquals(new Integer[]{3, 7}, list.toArray()); } @Test - public void testMaker(){ + public void testMaker() throws SQLException { ArrayList list = util.selectMaker(stmt); Collections.sort(list); Assert.assertArrayEquals(new String[]{"Intel"}, list.toArray()); } @Test - public void maxCostTest(){ + public void maxCostTest() throws SQLException { int max = util.makerWithMaxProceeds(stmt); Assert.assertEquals(140000, max); } diff --git a/task2/target/classes/A.class b/task2/target/classes/A.class new file mode 100644 index 0000000..4bf1a1a Binary files /dev/null and b/task2/target/classes/A.class differ diff --git a/task2/target/classes/DBUtility.class b/task2/target/classes/DBUtility.class index 8e43b51..b436bbf 100644 Binary files a/task2/target/classes/DBUtility.class and b/task2/target/classes/DBUtility.class differ diff --git a/task2/target/classes/classWork/Ex1.class b/task2/target/classes/classWork/Ex1.class new file mode 100644 index 0000000..97aab68 Binary files /dev/null and b/task2/target/classes/classWork/Ex1.class differ diff --git a/task2/target/classes/classWork/Ex2.class b/task2/target/classes/classWork/Ex2.class new file mode 100644 index 0000000..b35ec74 Binary files /dev/null and b/task2/target/classes/classWork/Ex2.class differ diff --git a/task2/target/classes/classWork/Wow.class b/task2/target/classes/classWork/Wow.class new file mode 100644 index 0000000..0de06f9 Binary files /dev/null and b/task2/target/classes/classWork/Wow.class differ diff --git a/task2/target/test-classes/DBTests.class b/task2/target/test-classes/DBTests.class index 8b582aa..231b0dc 100644 Binary files a/task2/target/test-classes/DBTests.class and b/task2/target/test-classes/DBTests.class differ diff --git a/task2/target/test-classes/HomeWorkLesson2.class b/task2/target/test-classes/HomeWorkLesson2.class index e372c08..29cb2c3 100644 Binary files a/task2/target/test-classes/HomeWorkLesson2.class and b/task2/target/test-classes/HomeWorkLesson2.class differ diff --git a/task3/task3.iml b/task3/task3.iml index 2a3c5ba..2b9ae0b 100644 --- a/task3/task3.iml +++ b/task3/task3.iml @@ -13,12 +13,12 @@ - - + + - - - + + + diff --git a/task4/task4.iml b/task4/task4.iml index 2394831..d140331 100644 --- a/task4/task4.iml +++ b/task4/task4.iml @@ -11,12 +11,12 @@ - - + + - - - + + +