diff --git a/front/MyScript.js b/front/MyScript.js
index 7907977..608cf7b 100644
--- a/front/MyScript.js
+++ b/front/MyScript.js
@@ -2,40 +2,49 @@ function setResult(result) {
let lbl = ``;
document.getElementById("result").innerHTML = lbl;
}
-let addButton = document.getElementById("getResultAdd");
-let a = document.getElementById("addNum1");
-let b = document.getElementById("addNum2");
-let Output = document.getElementById("addAnswer");
-let address = "hello"
+
+
function add(){
-address = "add"
-executeRequest();
+ executeRequest("add");
}
+
function sub(){
-address = "sub"
-executeRequest();
+ executeRequest("sub");
}
+
function mul(){
-address = "mul"
-executeRequest();
+ executeRequest("mul");
}
+
function del(){
-
-address = "del"
-if(b.value != 0) executeRequest();
-
+ executeRequest("del");
}
-function executeRequest() {
+function enterArray(){
+ executeRequestArray("array");
+}
- let num1 = a.value;
- let num2 = b.value;
+function executeRequest(address) {
+ let num1 = document.getElementById("addNum1").value;
+ let num2 = document.getElementById("addNum2").value;
+ let type = document.getElementById("type").value;
console.log("a" + num1 + "b" + num2)
- fetch(`http://localhost:8080/${address}?a=${num1}&b=${num2}`)
+ fetch(`http://localhost:8080/${address}?a=${num1}&b=${num2}&type=${type}`)
.then(response => {
- return response.json();
+ return response.text();
})
.then(result => {
setResult(result);
})
+}
+
+function executeRequestArray(address) {
+ let array = document.getElementById("enterArray").value;
+ fetch(`http://localhost:8080/${address}?InputNumbers=${array}&type=${type}`)
+ .then(response => {
+ return response.json();
+ })
+ .then(result => {
+ setResult(result);
+ })
}
\ No newline at end of file
diff --git a/front/index.html b/front/index.html
index 5247738..7ee821c 100644
--- a/front/index.html
+++ b/front/index.html
@@ -9,20 +9,27 @@
+
diff --git a/src/main/java/ru/ulstu/is/myapp/MyappApplication.java b/src/main/java/ru/ulstu/is/myapp/MyappApplication.java
index 1b6c49a..a02efd5 100644
--- a/src/main/java/ru/ulstu/is/myapp/MyappApplication.java
+++ b/src/main/java/ru/ulstu/is/myapp/MyappApplication.java
@@ -15,39 +15,7 @@ public class MyappApplication {
SpringApplication.run(MyappApplication.class, args);
}
- @GetMapping("/hello")
- public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
- return String.format("Hello %s!", name);
- }
- @CrossOrigin
- @GetMapping(value = "/add")
- public Integer doSum(@RequestParam(value = "a", defaultValue = "0") int a,
- @RequestParam(value = "b", defaultValue = "0") int b){
- return a + b;
- }
- @GetMapping("/sub")
- public Integer doSub(@RequestParam(value = "a", defaultValue = "0") int a,
- @RequestParam(value = "b", defaultValue = "0") int b){
- return a - b;
- }
- @GetMapping("/mul")
- public Integer doMul(@RequestParam(value = "a", defaultValue = "0") int a,
- @RequestParam(value = "b", defaultValue = "0") int b){
- return a * b;
- }
- @GetMapping("/del")
- public Integer doDel(@RequestParam(value = "a", defaultValue = "0") int a,
- @RequestParam(value = "b", defaultValue = "1") int b){
- return a / b;
- }
- @GetMapping("/mu")
- public String len(@RequestParam(value = "word", defaultValue = "") String name){
- return String.format("Длина слова " + name + " " + len(name));
- }
- @GetMapping("/de")
- public String root(){
- return new Date().toString();
- }
+
diff --git a/src/main/java/ru/ulstu/is/myapp/controller/Controller.java b/src/main/java/ru/ulstu/is/myapp/controller/Controller.java
new file mode 100644
index 0000000..7f9b2e9
--- /dev/null
+++ b/src/main/java/ru/ulstu/is/myapp/controller/Controller.java
@@ -0,0 +1,53 @@
+package ru.ulstu.is.myapp.controller;
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import ru.ulstu.is.myapp.service.MethodService;
+
+import java.util.Date;
+@RestController
+public class Controller {
+ private final MethodService methodService;
+ public Controller(MethodService methodService){
+ this.methodService = methodService;
+ }
+ @GetMapping("/hello")
+ public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
+ return String.format("Hello %s!", name);
+ }
+ @CrossOrigin
+ @GetMapping(value = "/add")
+ public String doSum(@RequestParam(value = "a", defaultValue = "0") Object a,
+ @RequestParam(value = "b", defaultValue = "0") Object b,
+ @RequestParam(value = "type", defaultValue = "int") String type){
+ return methodService.doSum(a,b, type);
+ }
+ @GetMapping("/sub")
+ public String doSub(@RequestParam(value = "a", defaultValue = "0") Object a,
+ @RequestParam(value = "b", defaultValue = "0") Object b,
+ @RequestParam(value = "type", defaultValue = "int") String type){
+ return methodService.doSub(a, b, type);
+ }
+ @GetMapping("/mul")
+ public String doMul(@RequestParam(value = "a", defaultValue = "0") Object a,
+ @RequestParam(value = "b", defaultValue = "0") Object b,
+ @RequestParam(value = "type", defaultValue = "int") String type){
+ return methodService.doMul(a, b, type);
+ }
+ @GetMapping("/del")
+ public String doDel(@RequestParam(value = "a", defaultValue = "0") Object a,
+ @RequestParam(value = "b", defaultValue = "1") Object b,
+ @RequestParam(value = "type", defaultValue = "int") String type){
+ return methodService.doDel(a, b, type);
+ }
+ @GetMapping("/mu")
+ public String len(@RequestParam(value = "word", defaultValue = "") String name){
+ return String.format("Длина слова " + name + " " + len(name));
+ }
+ @GetMapping("/de")
+ public String root(){
+ return new Date().toString();
+ }
+}
diff --git a/src/main/java/ru/ulstu/is/myapp/domain/BoolMethod.java b/src/main/java/ru/ulstu/is/myapp/domain/BoolMethod.java
new file mode 100644
index 0000000..b524bf4
--- /dev/null
+++ b/src/main/java/ru/ulstu/is/myapp/domain/BoolMethod.java
@@ -0,0 +1,28 @@
+package ru.ulstu.is.myapp.domain;
+
+import org.springframework.stereotype.Component;
+
+@Component(value="boolean")
+public class BoolMethod implements IMethods{
+ @Override
+ public Boolean doSum(Boolean a, Boolean b) {
+ return a || b;
+ }
+
+ @Override
+ public Boolean doSub(Boolean a, Integer b) {
+ return (!a && b%2==0) || (a && !(b%2==0));
+ }
+
+ @Override
+ public Boolean doMul(Boolean a, Integer b) {
+ return a && b%2 != 0;
+ }
+
+ @Override
+ public Boolean doDel(Boolean a, Integer b) {
+ if (b%2==0) return false;
+ else if(!a) return false;
+ else return true;
+ }
+}
diff --git a/src/main/java/ru/ulstu/is/myapp/domain/IMethods.java b/src/main/java/ru/ulstu/is/myapp/domain/IMethods.java
new file mode 100644
index 0000000..dd6002a
--- /dev/null
+++ b/src/main/java/ru/ulstu/is/myapp/domain/IMethods.java
@@ -0,0 +1,9 @@
+package ru.ulstu.is.myapp.domain;
+
+public interface IMethods {
+ T doSum(T a, T b);
+ T doSub(T a, Integer b);
+ T doMul(T a, Integer b);
+ T doDel(T a, Integer b);
+
+}
diff --git a/src/main/java/ru/ulstu/is/myapp/domain/IntMethod.java b/src/main/java/ru/ulstu/is/myapp/domain/IntMethod.java
new file mode 100644
index 0000000..67843a6
--- /dev/null
+++ b/src/main/java/ru/ulstu/is/myapp/domain/IntMethod.java
@@ -0,0 +1,30 @@
+package ru.ulstu.is.myapp.domain;
+
+import org.springframework.stereotype.Component;
+
+@Component(value="int")
+public class IntMethod implements IMethods {
+
+ @Override
+ public Integer doSum(Integer a, Integer b) {
+ return a + b;
+ }
+
+ @Override
+ public Integer doSub(Integer a, Integer b) {
+ return a - b;
+ }
+
+ @Override
+ public Integer doMul(Integer a, Integer b) {
+ return a*b;
+ }
+
+ @Override
+ public Integer doDel(Integer a, Integer b) {
+ if(b!=0){
+ return a/b;
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/ru/ulstu/is/myapp/domain/StrMethod.java b/src/main/java/ru/ulstu/is/myapp/domain/StrMethod.java
new file mode 100644
index 0000000..75ef737
--- /dev/null
+++ b/src/main/java/ru/ulstu/is/myapp/domain/StrMethod.java
@@ -0,0 +1,49 @@
+package ru.ulstu.is.myapp.domain;
+
+import org.springframework.stereotype.Component;
+
+@Component(value="string")
+public class StrMethod implements IMethods {
+
+ @Override
+ public String doSum(String a, String b) {
+ return a.concat(b);
+ }
+
+ @Override
+ public String doSub(String a, Integer b) {
+ String temp = a;
+ if(temp.length() >= b){
+ return temp.substring(0, a.length() - b);
+ }else{
+ return a;
+ }
+ }
+
+ @Override
+ public String doMul(String a, Integer b) {
+ String str = " ";
+ if(b == 0){
+ return str;
+ }
+ for(int i = 0; i < b; i++){
+ str = str + a;
+ }
+ return str;
+ }
+
+ @Override
+ public String doDel(String a, Integer b) {
+ if(b == 0){
+ return "На ноль делить нельзя!";
+ }
+ char[] chara = a.toCharArray();
+ String result = "";
+ for(int i = 0; i < chara.length/b; i++){
+ result += chara[i];
+ }
+ return result;
+ }
+
+
+}
diff --git a/src/main/java/ru/ulstu/is/myapp/service/MethodService.java b/src/main/java/ru/ulstu/is/myapp/service/MethodService.java
new file mode 100644
index 0000000..4b257fc
--- /dev/null
+++ b/src/main/java/ru/ulstu/is/myapp/service/MethodService.java
@@ -0,0 +1,76 @@
+package ru.ulstu.is.myapp.service;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Service;
+import ru.ulstu.is.myapp.domain.BoolMethod;
+import ru.ulstu.is.myapp.domain.IMethods;
+import ru.ulstu.is.myapp.domain.IntMethod;
+import ru.ulstu.is.myapp.domain.StrMethod;
+
+@Service
+public class MethodService {
+ private final ApplicationContext applicationContext;
+
+ public MethodService(ApplicationContext applicationContext){
+ this.applicationContext = applicationContext;
+
+ }
+
+ public String doSum(Object a, Object b, String type){
+ final IMethods method = (IMethods) applicationContext.getBean(type);
+ if(method instanceof StrMethod){
+ System.out.print("str");
+ return String.format("%s" , method.doSum(a, b));
+ }
+ if(method instanceof IntMethod){
+ System.out.print("int");
+ return String.format("%s" , method.doSum(Integer.parseInt(a.toString()), Integer.parseInt(b.toString())));
+ }
+ if(method instanceof BoolMethod){
+ System.out.print("bool");
+ return String.format("%s" , method.doSum(Boolean.parseBoolean(a.toString()), Boolean.parseBoolean(b.toString())));
+ }
+ return null;
+ }
+ public String doSub(Object a, Object b, String type){
+ final IMethods method = (IMethods) applicationContext.getBean(type);
+ if(method instanceof StrMethod){
+ return String.format("%s" , method.doSub(a.toString(), Integer.parseInt(b.toString())));
+ }
+ if(method instanceof IntMethod){
+ return String.format("%s" , method.doSub(Integer.parseInt(a.toString()), Integer.parseInt(b.toString())));
+ }
+ if(method instanceof BoolMethod){
+ return String.format("%s" , method.doSub(Boolean.parseBoolean(a.toString()), Integer.parseInt(b.toString())));
+ }
+ return null;
+ }
+ public String doMul(Object a, Object b, String type){
+ final IMethods method = (IMethods) applicationContext.getBean(type);
+ if(method instanceof StrMethod){
+ return String.format("%s" , method.doMul(a.toString(), Integer.parseInt(b.toString())));
+ }
+ if(method instanceof IntMethod){
+ return String.format("%s" , method.doMul(Integer.parseInt(a.toString()), Integer.parseInt(b.toString())));
+ }
+ if(method instanceof BoolMethod){
+ return String.format("%s" , method.doMul(Boolean.parseBoolean(a.toString()), Integer.parseInt(b.toString())));
+ }
+ return null;
+ }
+ public String doDel(Object a, Object b, String type){
+ final IMethods method = (IMethods) applicationContext.getBean(type);
+ if(method instanceof StrMethod){
+ return String.format("%s" , method.doDel(a.toString(), Integer.parseInt(b.toString())));
+ }
+ if(method instanceof IntMethod){
+ return String.format("%s" , method.doDel(Integer.parseInt(a.toString()), Integer.parseInt(b.toString())));
+ }
+ if(method instanceof BoolMethod){
+ return String.format("%s" , method.doDel(Boolean.parseBoolean(a.toString()), Integer.parseInt(b.toString())));
+ }
+ return null;
+ }
+
+}
diff --git a/src/test/java/ru/ulstu/is/myapp/MyappApplicationTests.java b/src/test/java/ru/ulstu/is/myapp/MyappApplicationTests.java
index e5d6918..80b60e8 100644
--- a/src/test/java/ru/ulstu/is/myapp/MyappApplicationTests.java
+++ b/src/test/java/ru/ulstu/is/myapp/MyappApplicationTests.java
@@ -1,13 +1,91 @@
package ru.ulstu.is.myapp;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import ru.ulstu.is.myapp.service.MethodService;
@SpringBootTest
class MyappApplicationTests {
-
+ @Autowired
+ private MethodService methodService;
@Test
void contextLoads() {
}
+ //sum
+ @Test
+ void testSumStr(){
+ String res = methodService.doSum("Hi, ", "Dima", "string");
+ Assertions.assertEquals("Hi, Dima", res);
+ }
+ @Test
+ void testSumInt(){
+ Integer res = Integer.valueOf(methodService.doSum(5, 5, "int"));
+ Assertions.assertEquals(10, res);
+ }
+ @Test
+ void testSumBool(){
+ Boolean res = Boolean.valueOf(methodService.doSum(true, true, "boolean"));
+ Assertions.assertEquals(true, res);
+ }
+
+ //Sub
+ @Test
+ void testSubStr(){
+ String res = methodService.doSub("hello", 1, "string");
+ Assertions.assertEquals("hell", res);
+ }
+ @Test
+ void testSubStr2(){
+ Assertions.assertThrows(NumberFormatException.class, () -> methodService.doSub("hello", 2, "int"));
+ }
+ @Test
+ void testSubInt(){
+ Integer res = Integer.valueOf(methodService.doSub(5, 2, "int"));
+ Assertions.assertEquals(3, res);
+ }
+ @Test
+ void testSubBool(){
+ Boolean res = Boolean.valueOf(methodService.doSub(true, 0, "boolean"));
+ Assertions.assertEquals(false, res);
+ }
+
+ //Mul
+ @Test
+ void testMulStr(){
+ String res = methodService.doMul("hello", 2, "string");
+ Assertions.assertEquals(" hellohello", res);
+ }
+ @Test
+ void testMulInt(){
+ Integer res = Integer.valueOf(methodService.doMul(5, 2, "int"));
+ Assertions.assertEquals(10, res);
+ }
+ @Test
+ void testMulBool(){
+ Boolean res = Boolean.valueOf(methodService.doMul(true, 0, "boolean"));
+ Assertions.assertEquals(false, res);
+ }
+
+ //Del
+ @Test
+ void testDelStr(){
+ String res = methodService.doDel("hello0", 2, "string");
+ Assertions.assertEquals("hel", res);
+ }
+ @Test
+ void testDelInt(){
+ Integer res = Integer.valueOf(methodService.doDel(6, 2, "int"));
+ Assertions.assertEquals(3, res);
+ }
+ @Test
+ void testDelBool(){
+ Boolean res = Boolean.valueOf(methodService.doDel(true, 2, "boolean"));
+ Assertions.assertEquals(false, res);
+ }
+
+
}