From 347af5c2ad91ba63b9dfb90be4755916a3601389 Mon Sep 17 00:00:00 2001 From: sameom1048 <55376152+sameom1048@users.noreply.github.com> Date: Fri, 20 Dec 2024 15:32:40 +0900 Subject: [PATCH] Add files via upload --- example1/db/wiseSaying/1.json | 1 + example1/db/wiseSaying/11.json | 1 + example1/db/wiseSaying/13.json | 1 + example1/db/wiseSaying/14.json | 1 + example1/db/wiseSaying/3.json | 1 + example1/db/wiseSaying/5.json | 1 + example1/db/wiseSaying/6.json | 1 + example1/db/wiseSaying/7.json | 1 + example1/db/wiseSaying/8.json | 1 + example1/db/wiseSaying/9.json | 1 + example1/db/wiseSaying/data.json | 1 + example1/db/wiseSaying/lastId.txt | 1 + example1/example1.iml | 19 ++ example1/pom.xml | 32 ++ .../src/main/java/com/ll/wiseSaying/App.java | 28 ++ .../src/main/java/com/ll/wiseSaying/Main.java | 11 + .../java/com/ll/wiseSaying/WiseSaying.java | 42 +++ .../ll/wiseSaying/WiseSayingController.java | 306 ++++++++++++++++++ .../ll/wiseSaying/WiseSayingRepository.java | 34 ++ .../com/ll/wiseSaying/WiseSayingService.java | 27 ++ .../classes/com/ll/wiseSaying/App.class | Bin 0 -> 1103 bytes .../classes/com/ll/wiseSaying/Main.class | Bin 0 -> 501 bytes .../com/ll/wiseSaying/WiseSaying.class | Bin 0 -> 1615 bytes .../ll/wiseSaying/WiseSayingController.class | Bin 0 -> 9525 bytes .../ll/wiseSaying/WiseSayingRepository.class | Bin 0 -> 1907 bytes .../com/ll/wiseSaying/WiseSayingService.class | Bin 0 -> 1318 bytes 26 files changed, 511 insertions(+) create mode 100644 example1/db/wiseSaying/1.json create mode 100644 example1/db/wiseSaying/11.json create mode 100644 example1/db/wiseSaying/13.json create mode 100644 example1/db/wiseSaying/14.json create mode 100644 example1/db/wiseSaying/3.json create mode 100644 example1/db/wiseSaying/5.json create mode 100644 example1/db/wiseSaying/6.json create mode 100644 example1/db/wiseSaying/7.json create mode 100644 example1/db/wiseSaying/8.json create mode 100644 example1/db/wiseSaying/9.json create mode 100644 example1/db/wiseSaying/data.json create mode 100644 example1/db/wiseSaying/lastId.txt create mode 100644 example1/example1.iml create mode 100644 example1/pom.xml create mode 100644 example1/src/main/java/com/ll/wiseSaying/App.java create mode 100644 example1/src/main/java/com/ll/wiseSaying/Main.java create mode 100644 example1/src/main/java/com/ll/wiseSaying/WiseSaying.java create mode 100644 example1/src/main/java/com/ll/wiseSaying/WiseSayingController.java create mode 100644 example1/src/main/java/com/ll/wiseSaying/WiseSayingRepository.java create mode 100644 example1/src/main/java/com/ll/wiseSaying/WiseSayingService.java create mode 100644 example1/target/classes/com/ll/wiseSaying/App.class create mode 100644 example1/target/classes/com/ll/wiseSaying/Main.class create mode 100644 example1/target/classes/com/ll/wiseSaying/WiseSaying.class create mode 100644 example1/target/classes/com/ll/wiseSaying/WiseSayingController.class create mode 100644 example1/target/classes/com/ll/wiseSaying/WiseSayingRepository.class create mode 100644 example1/target/classes/com/ll/wiseSaying/WiseSayingService.class diff --git a/example1/db/wiseSaying/1.json b/example1/db/wiseSaying/1.json new file mode 100644 index 0000000..05cc834 --- /dev/null +++ b/example1/db/wiseSaying/1.json @@ -0,0 +1 @@ +{"author":"게게","id":1,"content":"가가"} \ No newline at end of file diff --git a/example1/db/wiseSaying/11.json b/example1/db/wiseSaying/11.json new file mode 100644 index 0000000..2d62870 --- /dev/null +++ b/example1/db/wiseSaying/11.json @@ -0,0 +1 @@ +{"author":"더 한다면","id":11,"content":"한개만"} \ No newline at end of file diff --git a/example1/db/wiseSaying/13.json b/example1/db/wiseSaying/13.json new file mode 100644 index 0000000..892815b --- /dev/null +++ b/example1/db/wiseSaying/13.json @@ -0,0 +1 @@ +{"author":"추가","id":13,"content":"11번째"} \ No newline at end of file diff --git a/example1/db/wiseSaying/14.json b/example1/db/wiseSaying/14.json new file mode 100644 index 0000000..e7c9a9d --- /dev/null +++ b/example1/db/wiseSaying/14.json @@ -0,0 +1 @@ +{"author":"add","id":14,"content":"final"} \ No newline at end of file diff --git a/example1/db/wiseSaying/3.json b/example1/db/wiseSaying/3.json new file mode 100644 index 0000000..581914d --- /dev/null +++ b/example1/db/wiseSaying/3.json @@ -0,0 +1 @@ +{"author":"3번이지롱","id":3,"content":"사실 얘는"} \ No newline at end of file diff --git a/example1/db/wiseSaying/5.json b/example1/db/wiseSaying/5.json new file mode 100644 index 0000000..48a8ea5 --- /dev/null +++ b/example1/db/wiseSaying/5.json @@ -0,0 +1 @@ +{"author":"이다","id":5,"content":"5번"} \ No newline at end of file diff --git a/example1/db/wiseSaying/6.json b/example1/db/wiseSaying/6.json new file mode 100644 index 0000000..4624223 --- /dev/null +++ b/example1/db/wiseSaying/6.json @@ -0,0 +1 @@ +{"author":"뭘까","id":6,"content":"얘는"} \ No newline at end of file diff --git a/example1/db/wiseSaying/7.json b/example1/db/wiseSaying/7.json new file mode 100644 index 0000000..2aedf65 --- /dev/null +++ b/example1/db/wiseSaying/7.json @@ -0,0 +1 @@ +{"author":"들어가겠지","id":7,"content":"추가했으니"} \ No newline at end of file diff --git a/example1/db/wiseSaying/8.json b/example1/db/wiseSaying/8.json new file mode 100644 index 0000000..09df8fc --- /dev/null +++ b/example1/db/wiseSaying/8.json @@ -0,0 +1 @@ +{"author":"good","id":8,"content":"many"} \ No newline at end of file diff --git a/example1/db/wiseSaying/9.json b/example1/db/wiseSaying/9.json new file mode 100644 index 0000000..4f47bad --- /dev/null +++ b/example1/db/wiseSaying/9.json @@ -0,0 +1 @@ +{"author":"많이 많이 계속","id":9,"content":"조금 더"} \ No newline at end of file diff --git a/example1/db/wiseSaying/data.json b/example1/db/wiseSaying/data.json new file mode 100644 index 0000000..b42c5d9 --- /dev/null +++ b/example1/db/wiseSaying/data.json @@ -0,0 +1 @@ +[{"author":"게게","id":1,"content":"가가"},{"author":"3번이지롱","id":3,"content":"사실 얘는"},{"author":"이다","id":5,"content":"5번"},{"author":"뭘까","id":6,"content":"얘는"},{"author":"들어가겠지","id":7,"content":"추가했으니"},{"author":"좋아요","id":8,"content":"아주"},{"author":"많이 많이 계속","id":9,"content":"조금 더"},{"author":"몇개만 더","id":10,"content":"여기서"},{"author":"더 한다면","id":11,"content":"한개만"},{"author":"10번째 추가","id":12,"content":"마지막"},{"author":"추가","id":13,"content":"11번째"}] diff --git a/example1/db/wiseSaying/lastId.txt b/example1/db/wiseSaying/lastId.txt new file mode 100644 index 0000000..da2d398 --- /dev/null +++ b/example1/db/wiseSaying/lastId.txt @@ -0,0 +1 @@ +14 \ No newline at end of file diff --git a/example1/example1.iml b/example1/example1.iml new file mode 100644 index 0000000..56a9133 --- /dev/null +++ b/example1/example1.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example1/pom.xml b/example1/pom.xml new file mode 100644 index 0000000..12ef355 --- /dev/null +++ b/example1/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + groupId + example1 + 1.0-SNAPSHOT + + + 11 + 11 + UTF-8 + + + + + + com.fasterxml.jackson.core + jackson-databind + 2.15.2 + + + + com.googlecode.json-simple + json-simple + 1.1 + + + + \ No newline at end of file diff --git a/example1/src/main/java/com/ll/wiseSaying/App.java b/example1/src/main/java/com/ll/wiseSaying/App.java new file mode 100644 index 0000000..863f5ae --- /dev/null +++ b/example1/src/main/java/com/ll/wiseSaying/App.java @@ -0,0 +1,28 @@ +package com.ll.wiseSaying; + +import java.util.Scanner; + +public class App { + private final WiseSayingController controller; + + public App() { + this.controller = new WiseSayingController(); + } + + public void run() { + + String command; + Scanner sc = new Scanner(System.in); + + System.out.println("== 명언 앱 =="); + while(true) { + System.out.print("명령) "); + command = sc.nextLine(); + + if (command.equals("종료")) break; + else controller.start(command); + } + + } +} + diff --git a/example1/src/main/java/com/ll/wiseSaying/Main.java b/example1/src/main/java/com/ll/wiseSaying/Main.java new file mode 100644 index 0000000..dcdd8ac --- /dev/null +++ b/example1/src/main/java/com/ll/wiseSaying/Main.java @@ -0,0 +1,11 @@ +package com.ll.wiseSaying; + + +public class Main { + public static void main(String[] args) { + + App app = new App(); + app.run(); + } +} + diff --git a/example1/src/main/java/com/ll/wiseSaying/WiseSaying.java b/example1/src/main/java/com/ll/wiseSaying/WiseSaying.java new file mode 100644 index 0000000..e48178e --- /dev/null +++ b/example1/src/main/java/com/ll/wiseSaying/WiseSaying.java @@ -0,0 +1,42 @@ +package com.ll.wiseSaying; + +public class WiseSaying { + private int number; + private String author; + private String wiseSaying; + + public WiseSaying(int number, String author, String wiseSaying) { + this.number = number; + this.author = author; + this.wiseSaying = wiseSaying; + } + + public int getNumber() { + return number; + } + + public String getAuthor() { + return author; + } + + public String getWiseSaying() { + return wiseSaying; + } + + public void setNumber(int number) { + this.number = number; + } + + public void setAuthor(String author) { + this.author = author; + } + + public void setWiseSaying(String wiseSaying) { + this.wiseSaying = wiseSaying; + } + + @Override + public String toString() { + return number + " / " + author + " / " + wiseSaying; + } +} diff --git a/example1/src/main/java/com/ll/wiseSaying/WiseSayingController.java b/example1/src/main/java/com/ll/wiseSaying/WiseSayingController.java new file mode 100644 index 0000000..1fd3937 --- /dev/null +++ b/example1/src/main/java/com/ll/wiseSaying/WiseSayingController.java @@ -0,0 +1,306 @@ +package com.ll.wiseSaying; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; + +import java.io.*; +import java.util.Collections; +import java.util.List; +import java.util.Scanner; + +public class WiseSayingController { + + private final WiseSayingService service; + private String wiseSaying, author; + private int num; + private final String directoryPath = "db/wiseSaying"; // JSON 파일이 있는 디렉토리 경로 + private final String lastIdFilePath = directoryPath + "/lastId.txt"; // lastId.txt 파일 경로 + + public WiseSayingController() { + this.service = new WiseSayingService(); + startRead(); + } + + public void start(String command) { + String[] split = null; + if (command.matches(".*[^a-zA-Z0-9가-힣].*")) { // 특수문자 확인 + split = command.split("[^a-zA-Z0-9가-힣]"); // 특수문자로 split + command = split[0]; + } + switch (command) { + case "등록" : + create(); + break; + case "목록" : + if(split == null) + read(1); + else if(split.length == 5) + if(split[1].equals("keywordType") && split[3].equals("keyword")) + readKeyword(split[2], split[4]); + else if(split.length == 3) + if(split[1].equals("page")) + read(Integer.parseInt(split[2])); + break; + case "삭제" : + if(split != null) + delete(Integer.parseInt(split[2])); + else System.out.println("삭제?id=1과 같은 방식으로 입력해주세요!"); + break; + case "수정" : + if(split != null) + update(Integer.parseInt(split[2])); + else System.out.println("수정?id=1과 같은 방식으로 입력해주세요!"); + break; + case "빌드" : + build(); + break; + } + } + + private void startRead() { // 시작할때 DB 읽기 + + File directory = new File(directoryPath); + if (!directory.exists()) { + directory.mkdirs(); // 디렉터리 생성 + } + + File lastIdFile = new File(lastIdFilePath); + if(lastIdFile.exists()) { + try (BufferedReader br = new BufferedReader(new FileReader(lastIdFilePath))) { + String line = br.readLine(); + if (line != null) { + num = Integer.parseInt(line.trim()) + 1; // lastId.txt에서 n 값을 읽어오기 + } + } catch (IOException e) { + System.out.println("lastId.txt 파일을 읽는 중 오류가 발생했습니다."); + e.printStackTrace(); + return; // 파일을 읽을 수 없으면 프로그램 종료 + } + } + + // JSON 파일을 읽고 처리하는 부분 + for (int i = 1; i < num; i++) { + String filePath = directoryPath + "/" + i + ".json"; + File file = new File(filePath); + + // 파일이 존재하는지 확인 + if (!file.exists()) + continue; + + try { + // JSON 파일 읽기 + FileReader reader = new FileReader(filePath); + JSONParser parser = new JSONParser(); + JSONObject jsonObject = (JSONObject) parser.parse(reader); + + // JSON 파일에서 필요한 데이터 추출 + author = (String) jsonObject.get("author"); + int id = ((Long) jsonObject.get("id")).intValue(); + wiseSaying = (String) jsonObject.get("content"); + + // 데이터 출력 (필요한 작업 수행) + service.create(id, author, wiseSaying); + + reader.close(); // 리소스 닫기 + + } catch (Exception e) { + e.printStackTrace(); + } + } + + } + + private void create() { // 등록 + Scanner sc = new Scanner(System.in); + System.out.print("명언 : "); + wiseSaying = sc.nextLine(); + System.out.print("작가 : "); + author = sc.nextLine(); + service.create(num, author, wiseSaying); + System.out.println(num + "번 명언이 등록되었습니다."); + + File file = new File(lastIdFilePath); + try { + file.createNewFile(); + + // FileWriter는 기본적으로 파일을 덮어쓰므로 두 번째 인자 없이 사용하면 기존 내용을 지운 후 새로 작성 + FileWriter fw = new FileWriter(file, false); // false로 설정하면 덮어쓰기 모드 + PrintWriter writer = new PrintWriter(fw); + + writer.print(num); // n-1 값을 넣기 + + // PrintWriter close + writer.close(); + System.out.println("File written with Last value at lastId.txt: " + (num)); + + } catch (IOException e) { + e.printStackTrace(); + } + + saveToJson(num); + num++; + + } + + private void saveToJson(int n) { + WiseSaying jsonData = service.find(n); + if(jsonData != null) { + JSONObject obj = new JSONObject(); + obj.put("id", jsonData.getNumber()); + obj.put("content", jsonData.getWiseSaying()); + obj.put("author", jsonData.getAuthor()); + + try { + FileWriter file2 = new FileWriter(directoryPath + "/" + jsonData.getNumber() + ".json"); + file2.write(obj.toJSONString()); + file2.flush(); + file2.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + } + + private void read(int n) { // 목록 + System.out.println("번호 / 작가 / 명언"); + System.out.println("------------------"); + // 키를 리스트로 변환하고 최신순으로 정렬 + List keys = service.findAll(); + Collections.reverse(keys); + + // 시작 인덱스와 끝 인덱스 계산 + int startIndex = (n - 1) * 5; + int endIndex = Math.min(startIndex + 5, keys.size()); + + // 유효 범위 확인 + if (startIndex >= keys.size()) { + System.out.println("더 이상 데이터가 없습니다."); + return; + } + + // 지정된 범위의 데이터 출력 + for (int i = startIndex; i < endIndex; i++) { + Integer key = keys.get(i); + System.out.println(service.find(key)); + } + + System.out.println("------------------"); + System.out.print("페이지 : "); + + int pageNum = service.pageSize(); + for(int i = 1; i <= pageNum; i++) { + if(i == n) { + System.out.print("[" + i + "]"); + } + else System.out.print(i); + if(i != pageNum) System.out.print(" / "); + } + System.out.println(); + + } + private void readKeyword(String keywordType, String keyword) { // 키워드 목록 + System.out.println("------------------"); + System.out.println("검색 타입 : " + keywordType); + System.out.println("검색어 : " + keyword); + System.out.println("------------------"); + System.out.println("번호 / 작가 / 명언"); + System.out.println("------------------"); + + List keys = service.findAll(); + Collections.reverse(keys); + + if(keywordType.equals("author")) { + for (Integer key : keys) { + WiseSaying ws = service.find(key); + if (ws.getAuthor().contains(keyword)) { + System.out.println(ws); // 찾은 항목 출력 + } + } + } + else if(keywordType.equals("content")) { + for (Integer key : keys) { + WiseSaying ws = service.find(key); + if (ws.getWiseSaying().contains(keyword)) { + System.out.println(ws); // 찾은 항목 출력 + } + } + } + + } + private void update(int contentNum) { + Scanner sc = new Scanner(System.in); + WiseSaying data = service.find(contentNum); + if(data == null) + System.out.println(contentNum + "번 명언은 존재하지 않습니다."); + else { + System.out.println("명언(기존) : " + data.getWiseSaying()); + System.out.print("명언 : "); + wiseSaying = sc.nextLine(); + System.out.println("작가(기존) : " + data.getAuthor()); + System.out.print("작가 : "); + author = sc.nextLine(); + + service.update(contentNum, author, wiseSaying); + saveToJson(contentNum); + } + } + private void delete(int contentNum) { + if(!service.delete(contentNum)) { + System.out.println(contentNum + "번 명언은 존재하지 않습니다."); + } + else { + System.out.println(contentNum + "번 명언이 삭제되었습니다."); + + String deleteFilePath = directoryPath + "/" + contentNum + ".json"; + File file = new File(deleteFilePath); + // 파일 존재 여부 확인 후 삭제 + if (file.exists()) { + if (file.delete()) { + System.out.println(contentNum + ".json 파일이 삭제되었습니다."); + } else { + System.out.println("파일 삭제에 실패했습니다."); + } + } + } + } + + private void build() { // 빌드 + // JSONArray 객체 생성 (모든 데이터를 이 배열에 담을 것) + JSONArray dataArray = new JSONArray(); + + String buildFilePath = directoryPath + "/data.json"; + File buildFile = new File(buildFilePath); + + try { + buildFile.createNewFile(); + + // FileWriter는 기본적으로 파일을 덮어쓰므로 두 번째 인자 없이 사용하면 기존 내용을 지운 후 새로 작성 + FileWriter fw = new FileWriter(buildFile, false); // false로 설정하면 덮어쓰기 모드 + PrintWriter writer = new PrintWriter(fw); + + for(int i = 1; i < num; i++) { + WiseSaying buildData = service.find(i); + if(buildData != null) { + JSONObject obj = new JSONObject(); + obj.put("id", i); + obj.put("content", buildData.getWiseSaying()); + obj.put("author", buildData.getAuthor()); + + dataArray.add(obj); + + } + } + + writer.println(dataArray.toJSONString()); + writer.flush(); + writer.close(); + + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println("data.json 파일의 내용이 갱신되었습니다."); + } + +} diff --git a/example1/src/main/java/com/ll/wiseSaying/WiseSayingRepository.java b/example1/src/main/java/com/ll/wiseSaying/WiseSayingRepository.java new file mode 100644 index 0000000..b7cb91b --- /dev/null +++ b/example1/src/main/java/com/ll/wiseSaying/WiseSayingRepository.java @@ -0,0 +1,34 @@ +package com.ll.wiseSaying; + +import java.util.*; + +public class WiseSayingRepository { + private final Map map = new LinkedHashMap<>(); + + public int getMapSize() { + return map.size(); + } + public WiseSaying find(int num) { + return map.get(num); + } + public void create(int n, String author, String wiseSaying) { + map.put(n, new WiseSaying(n, author, wiseSaying)); + } + + public List keySet() { + return(new ArrayList<>(map.keySet())); + } + public void update(int contentNum, String author, String wiseSaying) { + WiseSaying data = map.get(contentNum); + data.setAuthor(author); + data.setWiseSaying(wiseSaying); + } + public boolean delete(int contentNum) { + if(map.get(contentNum) == null) + return false; + else { + map.remove(contentNum); + return true; + } + } +} diff --git a/example1/src/main/java/com/ll/wiseSaying/WiseSayingService.java b/example1/src/main/java/com/ll/wiseSaying/WiseSayingService.java new file mode 100644 index 0000000..7cb4506 --- /dev/null +++ b/example1/src/main/java/com/ll/wiseSaying/WiseSayingService.java @@ -0,0 +1,27 @@ +package com.ll.wiseSaying; + +import java.util.List; + +public class WiseSayingService { + + public WiseSayingRepository repository = new WiseSayingRepository(); + + public WiseSaying find(int num) { + return repository.find(num); + } + public void create(int n, String author, String wiseSaying) { + repository.create(n, author, wiseSaying); + } + + public List findAll() { + return repository.keySet(); + } + public int pageSize() { return (repository.getMapSize() - 1) / 5 + 1;} + + public void update(int contentNum, String author, String wiseSaying) { + repository.update(contentNum, author, wiseSaying); + } + public boolean delete(int contentNum) { + return repository.delete(contentNum); + } +} diff --git a/example1/target/classes/com/ll/wiseSaying/App.class b/example1/target/classes/com/ll/wiseSaying/App.class new file mode 100644 index 0000000000000000000000000000000000000000..5b8446a98e0a40653f0e3e9e2f1432a7688e43ce GIT binary patch literal 1103 zcma)5+fEZv6kVscX@`MA3xeXMqF`Gt^$v+561TKi_`<7{+ZC3G^!HQxQOK z3~e~2ARR*nSruXQ%hf;>gDQrQi{iBWo{^ceQJhoJgY&ZRf`W?*h6Pl^b$rjYZPOD- z7Yw(Qv+djqt6~=Q1DM6Otl(BL^t*#QyZ_BQ~A7tYZ|U&jPi`Hzx$R+ zX&A?th6&tYM>pOtu77x?;U*?E+>*GCe{In?sdu_@Z+6}^{5_#YgZ73ND!y4_%Ph9F zqtP3tJ&yg|20jh({#9KlXuvTlcbyTY7aS%PdSxJA5se3CU> zN3b1^`O=p+N1#2O*>BVl^I285d1dxcHO@Yoc|@v;uX{d@^LI$_H{p$uqv9&SHAl>M zCwJoras{+zS0S=%2+XV^_ywWmIZb{6-}y=TsY`TqI%0&s#o3kBFkbSxOKb?FwdUBr$+;Z%hxJrl_F4u%5eMfB(k z)Lj+&H}mPpPwwO>;HK$Do(zUEQF{Jcn(33833OdAnmR$?yr`K!kgqBnJJ(W$edI@pd7vA>{9J&-+hy0Wq7Pt3}w%0T5{W?Sblj({!KcgGDZko2~Z87M2 zGwvL>R67i*hO;La3N6zX?^N0yzH5=C*mAnu>hPW^?}0Jp9hfe|e5>mm8yUwA$mLsG9&8Pf79sHCJ<<761d$R$Lf5H|!#=}pO2n*O3p>TwY1Ge$m9n5^gc za*-G4_TS0x;a|>y#X0fJW z9R|bPbwW^d*s}M#hob8#IXZbfz(cBrm5s7`7^aW;k!Uz}mlJvKfKIN*ZI8s>_|Im> z)yUwHr1^}Y67n$ZQ|Cwo6XYk{=3UR}on`QXW~k*jNBt89t!dk$*RZ(j3S#j&s&;_k zEAochdzNr3eqcRLBVzd{aOdnq3~~P$@%KfmN5>_AXmHDFo1Um=u)(k#t8W-L8rhF--a5^@mel#sKab{YrTv!DsX4O$Cyv*`B}?WNieu-fc761CNHBx`HuNPSaL z!Qd6_!N%n5apxs#N$gvlVYLA&%CseMP{ z3mp=WsnW_=P|%w15I{4cF-;apI~tt)IuJZDH2Bug;M8F7^w8iL+zv8t5l>lCT8R}( zlvmbS5^7E%O!;1yvZMo97-q@CuOh@+A`t0*bOV^d#v?UC0?2R7;PjRSarPVnH>ejHk5c3HdSoX*|IUmgz3X?;bt( F{{W97Im`e6 literal 0 HcmV?d00001 diff --git a/example1/target/classes/com/ll/wiseSaying/WiseSayingController.class b/example1/target/classes/com/ll/wiseSaying/WiseSayingController.class new file mode 100644 index 0000000000000000000000000000000000000000..c8c4fcfe9da1e412a30f7ae7886515b45cd5173f GIT binary patch literal 9525 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

ChA(0IPjv_fko+EDW&&i8f_*R zU%+lHz)LJg=AVLCDki;jo;D$(Jy7ZVcG5x2%)l*~f#j{#Dnp%JW;#`f2WjmLky0iM zaK7ZLZ&6t+IF{*>qh{J;!BG;_Y%LZZ(U>3&6(9?;^$2aAryTClY#WmE2P3paY<;T~ zbK7F02ydGb9$tgs4Ere_BNyY|NSuMc(Qx9gGrCg`?n&94O#`_%6>}flG;(PQ_ob

oTCAIrl$FhM@e4-AY>R3_Fdj`g^s=}YC<-UqN(DAvBhXU!2)fE_TJh%3& zYCo`@>LaUL6Ua90ZPyC=z7)83^6gS|bS!tfT6Y7vE&W=f<#no#Q~loV$)>e$^VP;+ zTU#bzX32K#V3`%mbL#@ys@Ep;c*Az(<9=sL`cJJbhmk_VYgx{^<=g5U2en|w?g^C7 zE%QWny`CL-{yxhY+cF@Nru_pkS+dTO&uq6XaJ5{YI~Rwy({8^bAb2U$@}(6Jqg<{J z@ook_Io8fb6gT1Wp4AU_JYVq%r47}JZ?U^XC#LSo{iY0v^-#PFz*a*l zCc{lszp03txQI&v7ZX2m!n?Bl(CY0F%)}&K*HJg|1xh-;G||8#6OXYbFms-V6z(+> zU*T(k$pn1G_pN=Ul!*$SsHCQer})Oix>`0A?)CFr|>66e>w$Z zhCowMaty?4n8jOR6K~^M3@J%iQ!;U}G;|d+4oD_|3cF@gi R+|38!O;KRUMQ&60@L%zojW+-Q literal 0 HcmV?d00001 diff --git a/example1/target/classes/com/ll/wiseSaying/WiseSayingService.class b/example1/target/classes/com/ll/wiseSaying/WiseSayingService.class new file mode 100644 index 0000000000000000000000000000000000000000..fccba91f99583ac39641b698b84650973b2c2266 GIT binary patch literal 1318 zcma)4YflqF6g|@}^tF_i77<^FKwE(-zAz|>F)?XUHE|6@Ke@DH8C-Uo?Jfp?lOHru zNHp;W_@j(xb~lBzvGL2zotb;jJ?Gr{{pZIo01xmm4-+dHtmcuzN)83A>8z&1Egf#_ zu&%=$9qwjuFN6C6d0%$Ct_nQ=NTA$kdIvSfseM#kY1v20ZP#{s>8oDlroiYU<*Hyy zAYHC(3m8wmmJ}FoC|AA+4|b*h+TL||Gu7~#wzF;fN}rQUBiK`2fyJTYEa@MrrsOQ+ zy>eRu^W}PFXa`HvZg?Od>Ll3or5%t#xm<7T+lO||u_?z2e5%?UywNIz%RV~{_B>xR zALyc8r_KmuG_NO)!`gBst_}m`)EcTAkW0=|ZPyM$pCpzC3Lc$-ue*V4OMi2VUD=M^ zmX`X&CR(e7gq>C-B;WK{=LYnbw=L;NEzh7UZ%NGZLcb}WDQ$Y`bZLo;Yg&tmaZCs- z{oj&JjG<_vgc%bTF=z6Z&70W3qKPGaETbZ@Fbpf1EiiHFybOtjC)?-%c+FbP;jJacseBmJm8I79q5kM&}N&r}n3z+4*(4HhvI~-@Q zyAVOGtR7>upV1hZ6(hiET-pOH;8Fz0c3j4lXj}nTnQ5)p=t(Nlz8(z)vUGib%0d)#}1GAKFMFS$g?Gyjmh cJVY}8RWhW1MfrY~vl0B@ieh+yYNYDsUooBQV*mgE literal 0 HcmV?d00001