diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..31d6a44
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/.project b/.project
new file mode 100644
index 0000000..cec334c
--- /dev/null
+++ b/.project
@@ -0,0 +1,23 @@
+
+
+ development-empmanager
+
+
+
+
+
+ org.eclipse.wst.validation.validationbuilder
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.wst.jsdt.core.jsNature
+
+
diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope
new file mode 100644
index 0000000..cca691f
--- /dev/null
+++ b/.settings/.jsdtscope
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..49c8cd4
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.JRE_CONTAINER
\ No newline at end of file
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..11006e2
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Global
\ No newline at end of file
diff --git a/file/DepartmentData.csv b/file/DepartmentData.csv
index 649839f..d041914 100644
--- a/file/DepartmentData.csv
+++ b/file/DepartmentData.csv
@@ -1,3 +1,4 @@
+09,代表取締役
10,役員
11,人事・総務部
12,経理部
diff --git a/file/EmployeeData.csv b/file/EmployeeData.csv
index 60789e5..b2a56ce 100644
--- a/file/EmployeeData.csv
+++ b/file/EmployeeData.csv
@@ -8,3 +8,4 @@
10007,葉山稔,ハヤマミノル,mhayama@hoge.jp,hhh,14
10008,川上朱里,カワカミアカリ,kawakami@hoge.jp,iii,14
10009,杉井肇,スギイハジメ,sugi@hoge.jp,jjj,15
+10010,瓦昂世,カワラコウセイ,kawara@hoge.jp,kkk,09
diff --git a/src/com/rhizome/example/access/DepartmentAccess.java b/src/com/rhizome/example/access/DepartmentAccess.java
new file mode 100644
index 0000000..83509c2
--- /dev/null
+++ b/src/com/rhizome/example/access/DepartmentAccess.java
@@ -0,0 +1,114 @@
+package com.rhizome.example.access;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.rhizome.example.data.BaseData;
+import com.rhizome.example.data.DepartmentData;
+
+public class DepartmentAccess extends BaseAccess{
+ private static final String DEPDATA_FILEPATH = "file/DepartmentData.csv";
+ public DepartmentAccess() {
+ super(DEPDATA_FILEPATH);
+ }
+ @Override
+ public List selectById(String key) throws FileNotFoundException {
+ //全件データ
+ List allList = new ArrayList<>();
+
+ //取得用リスト(CSV形式)
+ List csvList = readData();
+
+ for (String line : csvList) {
+ DepartmentData department = new DepartmentData();
+ String[] columns = line.split(",");
+ department.setIdDepartment(columns[0]);
+ department.setNmDepartment(columns[1]);
+
+ allList.add(department);
+ }
+ //IDでの抽出データ
+ List selectList = new ArrayList<>();
+
+ for (BaseData department : allList) {
+ if (department.getPrimaryKeyValue().equals(key)) {
+ selectList.add(department);
+ }
+ }
+
+ return selectList;
+ }
+
+ @Override
+ public void insert(BaseData data) throws IOException {
+ //CSVファイルに追記する
+ addData(data);
+ }
+
+ @Override
+ public void update(BaseData updateData) throws IOException {
+ //更新後データリスト
+ List updatedList = new ArrayList<>();
+
+ //全件取得し、更新データを反映する
+ List allList = new ArrayList<>();
+
+ //取得用リスト(CSV形式)
+ List csvList = readData();
+
+ for (String line : csvList) {
+ DepartmentData department = new DepartmentData();
+ String[] columns = line.split(",");
+ department.setIdDepartment(columns[0]);
+ department.setNmDepartment(columns[1]);
+
+ allList.add(department);
+ }
+
+ for (BaseData department : allList) {
+ if(department.getPrimaryKeyValue().equals(updateData.getPrimaryKeyValue())) {
+ //指定されたデータとキーが一致するデータの場合、更新データを設定
+ updatedList.add(updateData);
+ } else {
+ //上記以外は取得したデータをそのまま設定
+ updatedList.add(department);
+ }
+ }
+ //ファイル上書き処理
+ updateData(updatedList);
+
+ }
+
+ @Override
+ public void delete(String key) throws IOException {
+ //全件から削除データを除いたリスト
+ List deletedList = new ArrayList<>();
+
+ //全件取得し、keyに該当するデータをリストから削除する
+ //全件データ
+ List allList = new ArrayList<>();
+
+ //取得用リスト(CSV形式)
+ List csvList = readData();
+
+ for (String line : csvList) {
+ DepartmentData department = new DepartmentData();
+ String[] columns = line.split(",");
+ department.setIdDepartment(columns[0]);
+ department.setNmDepartment(columns[1]);
+
+ allList.add(department);
+ }
+
+ for (BaseData department : allList) {
+ if(!department.getPrimaryKeyValue().equals(key)) {
+ deletedList.add(department);
+ }
+ }
+ //ファイル上書き処理
+ updateData(deletedList);
+ }
+
+}
\ No newline at end of file
diff --git a/src/com/rhizome/example/data/DepartmentData.java b/src/com/rhizome/example/data/DepartmentData.java
new file mode 100644
index 0000000..3588161
--- /dev/null
+++ b/src/com/rhizome/example/data/DepartmentData.java
@@ -0,0 +1,58 @@
+package com.rhizome.example.data;
+
+public class DepartmentData extends BaseData {
+ /** 部署ID */
+ private String idDepartment;
+ /** 部署名 */
+ private String nmDepartment;
+
+ /**
+ * @return 部署ID
+ */
+ public String getIdDepartment() {
+ return idDepartment;
+ }
+
+ /**
+ * @param idDepartment 部署ID
+ */
+ public void setIdDepartment(String idDepartment) {
+ this.idDepartment = idDepartment;
+ }
+
+ /**
+ * @return 部署名
+ */
+ public String getNmDepartment() {
+ return nmDepartment;
+ }
+ /**
+ * @param ndDepartment 部署名
+ */
+ public void setNmDepartment(String nmDepartment) {
+ this.nmDepartment = nmDepartment;
+ }
+
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String toString() {
+ return getIdDepartment() + "\t" + getNmDepartment();
+
+ }
+
+ @Override
+ public String toCSV() {
+ return getIdDepartment() + "," + getNmDepartment();
+ }
+
+ @Override
+ public String getPrimaryKeyValue() {
+ return idDepartment;
+
+ }
+
+}
diff --git a/src/com/rhizome/example/main/Main.java b/src/com/rhizome/example/main/Main.java
index a08fa53..20d9214 100644
--- a/src/com/rhizome/example/main/Main.java
+++ b/src/com/rhizome/example/main/Main.java
@@ -1,12 +1,16 @@
package com.rhizome.example.main;
+import java.io.BufferedReader;
import java.io.FileNotFoundException;
+import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import java.util.Scanner;
+import com.rhizome.example.access.DepartmentAccess;
import com.rhizome.example.access.EmployeeAccess;
import com.rhizome.example.data.BaseData;
+import com.rhizome.example.data.DepartmentData;
import com.rhizome.example.data.EmployeeData;
public class Main {
@@ -21,12 +25,13 @@ public class Main {
System.out.println("システムを開始します");
while (true) {
try {
- new Main().start();
+ new Main().Start();
} catch (Exception e) {
System.out.println("予期せぬエラーが発生しました");
e.printStackTrace();
}
}
+
}
/**
@@ -34,33 +39,161 @@ public class Main {
* @throws IOException
*
*/
- public void start() throws IOException {
+ public void Start() throws IOException {
System.out.println();
- System.out.println("1:検索 2:登録 3:更新 4:削除 0:終了");
+ System.out.println("1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:Employee)");
String ope = sc.nextLine();
switch (ope) {
- case "1": //検索
- empSelect();
+ case "1": //検索 ←変えたとこ
+ empDivide();
break;
- case "2": //登録
+ case "2": //登録
empInsert();
break;
- case "3": //更新
+ case "3": //更新
empUpdate();
break;
- case "4": //削除
+ case "4": //削除
empDelete();
break;
- case "0": //修了
+ case "9": //切り替え ←追加したとこ
+ Change();
+ break;
+ case "0": //終了
System.out.println("システムを終了します");
System.exit(0);
+ break;
default:
System.out.println("指定の番号を入力してください");
break;
}
}
+ //自分がつくったところ 部署のデータ
+ public void departmentStart() throws IOException {
+ System.out.println();
+ System.out.println("1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:Department)");
+ String ope = sc.nextLine();
+
+ switch (ope) {
+ case "1": //検索 おかしい
+ depDivide();
+ break;
+ case "2": //登録 おけ
+ depInsert();
+ break;
+ case "3": //更新 おけ
+ depUpdate();
+ break;
+ case "4": //削除 おかしい
+ depDelete();
+ break;
+ case "9": //切り替え おけ
+ Change();
+ break;
+ case "0": //終了 おけ
+ System.out.println("システムを終了します");
+ System.exit(0);
+ break;
+ default:
+ System.out.println("指定の番号を入力してください");
+ break;
+ }
+ }
+
+ //自分がつくったところ データ切り替えるか確認するばしょ
+ public void Change() throws IOException {
+ System.out.println();
+ System.out.println("データを切り替えますか?");
+ System.out.println("1:部署データへ 2:社員データへ 0:終了");
+ String ope = sc.nextLine();
+
+ switch (ope) {
+ case "1": //部署データに切り替える おけ
+ departmentStart();
+ break;
+ case "2": //社員データに戻る おけ
+ Start();
+ break;
+ case "0": //終了
+ System.out.println("システムを終了します");
+ System.exit(0);
+ break;
+ default:
+ System.out.println("指定の番号を入力してください");
+ break;
+ }
+
+ }
+
+ //自分がつくったところ 全検索か条件検索か
+ public void empDivide() throws IOException {
+ System.out.println();
+ System.out.println("1:全検索 2:条件検索 それ以外:戻る");
+ String ope = sc.nextLine();
+
+ switch (ope) {
+ case "1": //全検索 おけ
+ empExportcsv();
+ break;
+ case "2": //条件検索 おけ
+ empSelect();
+ break;
+ default:
+ break;
+
+ }
+ }
+
+ //自分がつくったところ 部署 全検索か 条件検索か
+ public void depDivide() throws IOException {
+ System.out.println();
+ System.out.println("1:全検索 2:条件検索 それ以外:戻る");
+ String ope = sc.nextLine();
+
+ switch (ope) {
+ case "1": //全検索 おけ
+ depExportcsv();
+ break;
+ case "2": //条件検索 おけ
+ depSelect();
+ break;
+ default:
+ break;
+ }
+ }
+
+ //自分がつくったとこ csv指定して出力
+ public void empExportcsv() throws IOException {
+
+ try (BufferedReader reader = new BufferedReader(new FileReader("file/EmployeeData.csv"))) {
+ String line;
+
+ while ((line = reader.readLine()) != null) {
+ String formatted = line.replace(",", " ");
+ System.out.println(formatted);
+ }
+
+ }
+
+ }
+
+ //自分がつくったとこ 部署csv指定して出力
+ public void depExportcsv() throws IOException {
+
+ try (BufferedReader reader = new BufferedReader(new FileReader("file/DepartmentData.csv"))) {
+ String line;
+
+ while ((line = reader.readLine()) != null) {
+ String formatted = line.replace(",", " ");
+ System.out.println(formatted);
+ }
+
+ }
+
+ }
+
/**
* 社員ファイルから情報を検索する
*
@@ -75,7 +208,7 @@ public class Main {
//idに一致する社員データ取得
list = ea.selectById(id);
- if (list.size() == 0) { //取得結果が0件の場合
+ if (list.size() == 0) { //取得結果が0件の場合
System.out.println("入力された値で情報がみつかりませんでした");
}
@@ -83,6 +216,29 @@ public class Main {
for (BaseData employee : list) {
System.out.println(employee.toString());
}
+
+ }
+
+ //自分がつくったところ 部署ファイルから情報検索
+ public void depSelect() throws FileNotFoundException {
+ DepartmentAccess da = new DepartmentAccess();
+ List list;
+
+ //IDの入力および入力チェック
+ String id = inputCheck("ID", true);
+ //idに一致する社員データ取得
+ list = da.selectById(id);
+
+ if (list.size() == 0) { //取得結果が0件の場合
+ System.out.println("入力された値で情報がみつかりませんでした");
+ }
+
+ //取得結果件数分、データをタブ区切りで出力する
+ for (BaseData department : list) {
+ System.out.println(department.toString());
+
+ }
+
}
/**
@@ -114,6 +270,23 @@ public class Main {
System.out.println("登録が完了しました");
}
+ //自分がつくったところ 部署ファイルに情報登録
+ public void depInsert() throws IOException {
+ //各項目の入力および入力チェック処理
+ String id = inputCheck("部署ID", true);
+ String name = inputCheck("部署名", false);
+
+ //部署データインスタンスを生成し、入力値を設定
+ DepartmentData department = new DepartmentData();
+ department.setIdDepartment(id);
+ department.setNmDepartment(name);
+
+ DepartmentAccess da = new DepartmentAccess();
+ //ファイルデータ追加処理
+ da.insert(department);
+ System.out.println("登録が完了しました");
+ }
+
/**
* 社員ファイルの情報を更新する
*
@@ -151,6 +324,29 @@ public class Main {
System.out.println("更新が完了しました");
}
+ //自分が作ったところ 部署データアップデート
+ public void depUpdate() throws IOException {
+ DepartmentAccess da = new DepartmentAccess();
+ //入力チェック
+ String id = inputCheck("部署ID", true);
+ //存在チェック
+ if (da.selectById(id).size() == 0) {
+ System.out.println("入力された値で情報がみつかりませんでした");
+ return;
+ }
+
+ //名前入力チェック
+ String name = inputCheck("部署名", false);
+ DepartmentData department = new DepartmentData();
+ department.setIdDepartment(id);
+ department.setNmDepartment(name);
+
+ //ファイルデータ更新処理
+ da.update(department);
+ System.out.println("更新が完了しました");
+
+ }
+
/**
* 社員ファイルの情報を削除する
*
@@ -166,7 +362,7 @@ public class Main {
System.out.println("入力された値で情報がみつかりませんでした");
return;
}
- System.out.println("指定されたIDの情報を削除します? Y/y");
+ System.out.println("指定されたIDの情報を削除しますか? Y/y");
System.out.println("(Y/y以外の入力であればキャンセル)");
String yY = sc.nextLine();
if (!"y".equals(yY) && !"Y".equals(yY)) {
@@ -178,6 +374,30 @@ public class Main {
System.out.println("削除が完了しました");
}
+ //自分がつくったところ 部署データ削除
+ public void depDelete() throws IOException {
+ DepartmentAccess da = new DepartmentAccess();
+ //入力チェック
+ String id = inputCheck("部署ID", true);
+ //存在チェック
+ if (da.selectById(id).size() == 0) {
+ System.out.println("入力された値で情報がみつかりませんでした");
+ return;
+ }
+ System.out.println("指定されたIDの情報を削除しますか? Y/y");
+ System.out.println("(Y/y以外の入力であればキャンセル)");
+ String yY = sc.nextLine();
+ if (!"y".equals(yY) && !"Y".equals(yY)) {
+ System.out.println("削除をキャンセルしました");
+ return;
+ }
+
+ //ファイルデータ削除処理
+ da.delete(id);
+ System.out.println("削除が完了しました");
+
+ }
+
/**
* 入力値を判定し、返却する
*
@@ -208,4 +428,5 @@ public class Main {
}
return str;
}
+
}