trunk下に移動
@@ -1,10 +0,0 @@ | ||
1 | -echo off | |
2 | - | |
3 | -set EXEDIR=%~dp0 | |
4 | -set CLASSPATH=%EXEDIR%\ConsolePicocalc-0.1.jar;%EXEDIR%\JPicosheet-0.1.4.jar | |
5 | - | |
6 | -echo %CLASSPATH% | |
7 | - | |
8 | -java -classpath %CLASSPATH% com.nissy_ki_chi.ConsolePicocalc.ConsolePicocalc | |
9 | - | |
10 | -pause |
@@ -1,70 +0,0 @@ | ||
1 | -<?xml version="1.0" encoding="UTF-8"?> | |
2 | - | |
3 | -<project name="ConsolePicocalc" basedir="." default="all"> | |
4 | - | |
5 | - <description>build ConsolePicocalc JAR file</description> | |
6 | - | |
7 | - <!-- Properties --> | |
8 | - <property name="projectName" value="ConsolePicocalc"/> | |
9 | - <property name="version" value="0.1"/> | |
10 | - <property name="jarFileName" value="${projectName}-${version}.jar"/> | |
11 | - | |
12 | - <property name="sourceDir" value="src"/> | |
13 | - <property name="binDir" value="bin"/> | |
14 | - <property name="jarDir" value="jarfile"/> | |
15 | - <property name="jarWorkDir" value="jarwork"/> | |
16 | - <property name="javadocDir" value="doc"/> | |
17 | - <property name="distDir" value="dist"/> | |
18 | - <property name="exeDir" value="exe"/> | |
19 | - | |
20 | - <!-- property name="jpicosheetJar" value="C:/Users/Yusuke/Develop/Java/PicoSheet-Workspace/JPicosheet/jarfile/JPicosheet-0.1.4.jar"/ --> | |
21 | - <property name="jpicosheetJar" value="/home/yusuke/Develop/Eclipse-workspaces/PicoSheet-Workspace/JPicosheet/jarfile/JPicosheet-0.1.4.jar"/> | |
22 | - | |
23 | - <target name="all" depends="init,makedir,copyJarFile,jar,makeExe,clean" /> | |
24 | - | |
25 | - <target name="init"> | |
26 | - <tstamp></tstamp> | |
27 | - <delete dir="${jarWorkDir}"/> | |
28 | - <delete file="${jarDir}/${jarFileName}"/> | |
29 | - <delete file="${distDir}/${projectName}"/> | |
30 | - <delete file="${exeDir}"/> | |
31 | - </target> | |
32 | - | |
33 | - <target name="makedir"> | |
34 | - <mkdir dir="${jarDir}"/> | |
35 | - <mkdir dir="${jarWorkDir}"/> | |
36 | - <mkdir dir="${distDir}"/> | |
37 | - <mkdir dir="${exeDir}"/> | |
38 | - </target> | |
39 | - | |
40 | - <target name="copyJarFile" depends="makedir"> | |
41 | - <copy todir="${jarWorkDir}"> | |
42 | - <fileset dir="${binDir}"> | |
43 | - <include name="**/*.class"/> | |
44 | - <exclude name="test/**"/> | |
45 | - </fileset> | |
46 | - </copy> | |
47 | - </target> | |
48 | - | |
49 | - <target name="jar" depends="copyJarFile"> | |
50 | - <jar destfile="${jarDir}/${jarFileName}"> | |
51 | - <zipfileset dir="${jarWorkDir}" /> | |
52 | - </jar> | |
53 | - </target> | |
54 | - | |
55 | - <target name="makeExe" depends="jar"> | |
56 | - <copy todir="${exeDir}"> | |
57 | - <fileset file="${jpicosheetJar}"/> | |
58 | - <fileset file="${jarDir}/${jarFileName}"/> | |
59 | - <fileset file="conpico.bat"/> | |
60 | - </copy> | |
61 | - </target> | |
62 | - | |
63 | - | |
64 | - <target name="clean"> | |
65 | - <delete dir="${jarWorkDir}"/> | |
66 | - </target> | |
67 | - | |
68 | - | |
69 | -</project> | |
70 | - |
@@ -1,91 +0,0 @@ | ||
1 | -コマンド | |
2 | - | |
3 | -●●ドット「.」で始まる場合、コマンドである。 | |
4 | - | |
5 | ----------------Book用 | |
6 | - | |
7 | -.book.add ブック名 | |
8 | -新しいブックの作成 | |
9 | - | |
10 | -.book.current ブック名 | |
11 | -カレントブックの変更 | |
12 | - | |
13 | -.book.list | |
14 | -ブックの一覧を表示 | |
15 | - | |
16 | -.book.functions | |
17 | -カレントブックで使用可能な関数一覧を表示 | |
18 | - | |
19 | -.book.load | |
20 | -カレントブックに指定したファイルの内容を読み込む | |
21 | - | |
22 | -.book.save | |
23 | -カレントブックの内容を指定したファイルに書き込み | |
24 | - | |
25 | - | |
26 | ----------------Sheet用 | |
27 | - | |
28 | -.sheet.add シート名 | |
29 | -カレントブックに新しいシートを追加 | |
30 | - | |
31 | -.sheet.list | |
32 | -カレントブックのシート一覧を表示 | |
33 | - | |
34 | -.sheet.current シート名 | |
35 | -カレントシートの変更 | |
36 | - | |
37 | - | |
38 | ----------------Cell用 | |
39 | -.list | |
40 | -カレントシートのセル一覧を表示 | |
41 | - | |
42 | - | |
43 | ----------------Group用 | |
44 | -.group.list | |
45 | -カレントシートのグループ一覧を表示 | |
46 | - | |
47 | -.group.list.cells グループ名 | |
48 | -カレントシートの指定したグループに属するセル一覧を表示 | |
49 | - | |
50 | -.group.add グループ名 | |
51 | -カレントシートに新しいグループを追加 | |
52 | - | |
53 | -.group.delete グループ名 | |
54 | -カレントシートのグループを削除 | |
55 | - | |
56 | -.group.cells.add グループ名 セル名 セル名... | |
57 | -カレントシートの指定したグループに指定したセルを追加 | |
58 | - | |
59 | -.group.cells.remove グループ名 セル名 セル名... | |
60 | -カレントシートの指定したグループから指定したセルを削除 | |
61 | - | |
62 | - | |
63 | - | |
64 | ----------------Table用 | |
65 | - | |
66 | -.list.tables | |
67 | -カレントシートのテーブル一覧を表示 | |
68 | - | |
69 | -.list.table.cells テーブル名 | |
70 | -カレントシートの指定したテーブルに属するセル一覧を表示 | |
71 | - | |
72 | - | |
73 | - | |
74 | -●●ドットで始まらない場合、カレントブックのカレントシートにあるセルに対する操作である | |
75 | - | |
76 | -<セル名> | |
77 | -セルの値を表示する | |
78 | - | |
79 | -<セル名> formula | |
80 | -セルの式を表示する。セルが式でない場合エラー。 | |
81 | - | |
82 | -<セル名>=値 | |
83 | -セルに値をセットする。 | |
84 | -式をセットする場合、<セル名>==式 とイコールを続けて書く。 | |
85 | - | |
86 | -<セル名>.label ラベル | |
87 | -セルにラベルをセットする | |
88 | - | |
89 | - | |
90 | - | |
91 | - |
@@ -1,36 +0,0 @@ | ||
1 | -package com.nissy_ki_chi.ConsolePicocalc; | |
2 | - | |
3 | -import com.nissy_ki_chi.jpicosheet.core.Cell; | |
4 | -import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
5 | -import com.nissy_ki_chi.jpicosheet.core.Table; | |
6 | - | |
7 | -public class TableCommand { | |
8 | - | |
9 | - void listTableCells(Sheet currentSheet, String tableName) { | |
10 | - Table t = currentSheet.getTable(tableName); | |
11 | - int rowSize = t.getRowSize(); | |
12 | - int colSize = t.getColSize(); | |
13 | - for (int rowIdx = 0; rowIdx < rowSize; rowIdx++) { | |
14 | - for (int colIdx = 0; colIdx < colSize; colIdx++) { | |
15 | - Cell c = t.getCell(rowIdx, colIdx); | |
16 | - Utils.printCellNoLn(c); | |
17 | - if (colIdx < colSize -1) { | |
18 | - System.out.println("\t"); | |
19 | - } | |
20 | - } | |
21 | - System.out.println(""); | |
22 | - } | |
23 | - } | |
24 | - | |
25 | - void listTables(Sheet currentSheet) { | |
26 | - for (Table t: currentSheet.getTables()) { | |
27 | - System.out.println(t.getName()); | |
28 | - } | |
29 | - } | |
30 | - | |
31 | - void processTableCmd(Sheet sheet, String[] cmdArr, String argStr) { | |
32 | - // TODO 自動生成されたメソッド・スタブ | |
33 | - | |
34 | - } | |
35 | - | |
36 | -} |
@@ -1,36 +0,0 @@ | ||
1 | -package com.nissy_ki_chi.ConsolePicocalc; | |
2 | - | |
3 | -import java.util.List; | |
4 | -import java.util.TreeSet; | |
5 | - | |
6 | -import com.nissy_ki_chi.jpicosheet.core.Book; | |
7 | -import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
8 | - | |
9 | -public class SheetCommand { | |
10 | - | |
11 | - public void processSheetCmd(Book book, String[] cmdArr, String argStr) { | |
12 | - | |
13 | - // シート追加 | |
14 | - if (cmdArr[1].equals("add")) { | |
15 | - book.addSheet(argStr); | |
16 | - } | |
17 | - | |
18 | - // カレントシート変更 | |
19 | - if (cmdArr[1].equals("current")) { | |
20 | - book.getResolver().setCurrentSheet(book.getSheet(argStr)); | |
21 | - } | |
22 | - | |
23 | - // シート名一覧 | |
24 | - if (cmdArr[1].equals("list")) { | |
25 | - TreeSet<String> sheetNames = new TreeSet<String>(); | |
26 | - List<Sheet> sheets = book.getSheets(); | |
27 | - for (Sheet s: sheets) { | |
28 | - sheetNames.add(s.getName()); | |
29 | - } | |
30 | - for (String name: sheetNames) { | |
31 | - System.out.println(name); | |
32 | - } | |
33 | - } | |
34 | - } | |
35 | - | |
36 | -} |
@@ -1,131 +0,0 @@ | ||
1 | -package com.nissy_ki_chi.ConsolePicocalc; | |
2 | - | |
3 | -import java.io.BufferedReader; | |
4 | -import java.io.BufferedWriter; | |
5 | -import java.io.FileInputStream; | |
6 | -import java.io.FileWriter; | |
7 | -import java.io.IOException; | |
8 | -import java.io.InputStreamReader; | |
9 | -import java.util.Arrays; | |
10 | -import java.util.HashMap; | |
11 | -import java.util.Map; | |
12 | -import java.util.TreeSet; | |
13 | - | |
14 | -import com.nissy_ki_chi.jpicosheet.core.Book; | |
15 | -import com.nissy_ki_chi.jpicosheet.core.ConcurrentBookWrapper; | |
16 | -import com.nissy_ki_chi.jpicosheet.util.SimpleReader; | |
17 | -import com.nissy_ki_chi.jpicosheet.util.SimpleWriter; | |
18 | - | |
19 | -public class BookCommand { | |
20 | - | |
21 | - String getCurrentBookName() { | |
22 | - return _currentBookName; | |
23 | - } | |
24 | - | |
25 | - void setCurrentBookName(String bookName) { | |
26 | - this._currentBookName = bookName; | |
27 | - } | |
28 | - | |
29 | - Map<String, Book> getBooks() { | |
30 | - return _books; | |
31 | - } | |
32 | - | |
33 | - Book getCurrentBook() { | |
34 | - return this._books.get(_currentBookName); | |
35 | - } | |
36 | - | |
37 | - Book getBook(String bookName) { | |
38 | - return this._books.get(bookName); | |
39 | - } | |
40 | - | |
41 | - Map<String, Book> _books = new HashMap<String, Book>(); | |
42 | - String _currentBookName = null; | |
43 | - | |
44 | - void processBookCmd(String[] cmdArr, String argStr) { | |
45 | - | |
46 | - if (cmdArr.length == 1) { | |
47 | - return; | |
48 | - } | |
49 | - | |
50 | - // 新しいブックの追加 | |
51 | - if (cmdArr[1].equals("add")) { | |
52 | - Book newBook = new Book(argStr); | |
53 | - newBook.addSheet("sheet1"); | |
54 | - _books.put(newBook.getName(), newBook); | |
55 | - } | |
56 | - | |
57 | - // カレントブックの変更 | |
58 | - if (cmdArr[1].equals("current")) { | |
59 | - if (_books.containsKey(argStr)) { | |
60 | - this._currentBookName = argStr; | |
61 | - } | |
62 | - } | |
63 | - | |
64 | - // ブックの一覧を表示 | |
65 | - if (cmdArr[1].equals("list")) { | |
66 | - for (String bookName: new TreeSet<String>(_books.keySet())) { | |
67 | - System.out.println(bookName); | |
68 | - } | |
69 | - } | |
70 | - | |
71 | - // カレントブックで使用可能な関数一覧を表示 | |
72 | - if (cmdArr[1].equals("functions")) { | |
73 | - String[] functionNames = _books.get(_currentBookName).getFunctionNames(); | |
74 | - Arrays.sort(functionNames); | |
75 | - for (String funcName: Arrays.asList(functionNames)) { | |
76 | - System.out.println(funcName); | |
77 | - } | |
78 | - } | |
79 | - | |
80 | - // ファイル読み込み | |
81 | - if (cmdArr[1].equals("load")) { | |
82 | - String filePath = argStr; | |
83 | - Book book = _books.get(_currentBookName); | |
84 | - load(book, filePath); | |
85 | - } | |
86 | - | |
87 | - // ファイル書き込み | |
88 | - if (cmdArr[1].equals("save")) { | |
89 | - String filePath = argStr; | |
90 | - Book book = _books.get(_currentBookName); | |
91 | - SimpleWriter sw = new SimpleWriter(new ConcurrentBookWrapper(book)); | |
92 | - BufferedWriter w = null; | |
93 | - try { | |
94 | - w = new BufferedWriter(new FileWriter(filePath)); | |
95 | - sw.write(w); | |
96 | - } catch (Exception e) { | |
97 | - e.printStackTrace(); | |
98 | - } finally { | |
99 | - if (w != null) { | |
100 | - try { | |
101 | - w.close(); | |
102 | - } catch (IOException e) { | |
103 | - e.printStackTrace(); | |
104 | - } | |
105 | - } | |
106 | - } | |
107 | - } | |
108 | - | |
109 | - } | |
110 | - | |
111 | - void load(Book book, String filePath) { | |
112 | - SimpleReader sr = new SimpleReader(new ConcurrentBookWrapper(book)); | |
113 | - BufferedReader fileBR = null; | |
114 | - try { | |
115 | - fileBR = new BufferedReader(new InputStreamReader(new FileInputStream(filePath))); | |
116 | - sr.Read(fileBR); | |
117 | - } catch (Exception e) { | |
118 | - e.printStackTrace(); | |
119 | - } finally { | |
120 | - if (fileBR != null) { | |
121 | - try { | |
122 | - fileBR.close(); | |
123 | - } catch (IOException e) { | |
124 | - e.printStackTrace(); | |
125 | - } | |
126 | - } | |
127 | - } | |
128 | - | |
129 | - } | |
130 | - | |
131 | -} |
@@ -1,95 +0,0 @@ | ||
1 | -package com.nissy_ki_chi.ConsolePicocalc; | |
2 | - | |
3 | -import java.util.Set; | |
4 | -import java.util.TreeMap; | |
5 | -import java.util.TreeSet; | |
6 | - | |
7 | -import com.nissy_ki_chi.jpicosheet.core.Cell; | |
8 | -import com.nissy_ki_chi.jpicosheet.core.Group; | |
9 | -import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
10 | - | |
11 | -public class GroupCommand { | |
12 | - | |
13 | - void processGroupCmd(Sheet sheet, String[] cmdArr, String argStr) { | |
14 | - | |
15 | - // このシートのグループ一覧表示 | |
16 | - if (cmdArr[1].equals("list") && cmdArr.length == 2) { | |
17 | - Set<Group> groups = sheet.getGroups(); | |
18 | - TreeSet<String> gNames = new TreeSet<String>(); | |
19 | - for (Group g: groups) { | |
20 | - gNames.add(g.getName()); | |
21 | - } | |
22 | - for (String s: gNames) { | |
23 | - System.out.println(s); | |
24 | - } | |
25 | - return; | |
26 | - } | |
27 | - | |
28 | - // 指定グループ内のセル表示 | |
29 | - if (cmdArr[1].equals("list") && cmdArr[2].equals("cells")) { | |
30 | - Group group = sheet.getGroup(argStr); | |
31 | - TreeMap<String, Cell> tCell = new TreeMap<String, Cell>(); | |
32 | - for (Cell c: group.getCells()) { | |
33 | - tCell.put(c.getName(), c); | |
34 | - } | |
35 | - for (Cell c: tCell.values()) { | |
36 | - Utils.printCell(c); | |
37 | - } | |
38 | - } | |
39 | - | |
40 | - // グループ追加 | |
41 | - if (cmdArr[1].equals("add")) { | |
42 | - sheet.addGroup(argStr); | |
43 | - } | |
44 | - | |
45 | - // グループ削除 | |
46 | - if (cmdArr[1].equals("delete")) { | |
47 | - if (sheet.groupExists(argStr)) { | |
48 | - sheet.deleteGroup(argStr); | |
49 | - } | |
50 | - } | |
51 | - | |
52 | - // グループにセル追加 | |
53 | - if (cmdArr[1].equals("cells") && cmdArr[2].equals("add")) { | |
54 | - | |
55 | - Group group = sheet.getGroup(Utils.getTargetHeadFromArgStr(argStr)); | |
56 | - String[] cellNamesArr = Utils.getTargetBodyFromArgStr(argStr); | |
57 | - // セルをグループに追加 | |
58 | - for (String cellName: cellNamesArr) { | |
59 | - cellName = cellName.trim(); | |
60 | - if (cellName.length() > 0) { | |
61 | - group.addCell(cellName); | |
62 | - } | |
63 | - } | |
64 | - } | |
65 | - | |
66 | - // グループからセル削除 | |
67 | - if (cmdArr[1].equals("cells") && cmdArr[2].equals("remove")) { | |
68 | - | |
69 | - Group group = sheet.getGroup(Utils.getTargetHeadFromArgStr(argStr)); | |
70 | - String[] cellNamesArr = Utils.getTargetBodyFromArgStr(argStr); | |
71 | - // セルをグループから削除 | |
72 | - for (String cellName: cellNamesArr) { | |
73 | - cellName = cellName.trim(); | |
74 | - if (cellName.length() > 0) { | |
75 | - group.removeCell(cellName); | |
76 | - } | |
77 | - } | |
78 | - | |
79 | - } | |
80 | - | |
81 | - } | |
82 | - | |
83 | - void listGroups(Sheet sheet) { | |
84 | - for (Group g: sheet.getGroups() ) { | |
85 | - System.out.println(g.getName()); | |
86 | - } | |
87 | - } | |
88 | - | |
89 | - void listGroupCells(Sheet sheet, String groupName) { | |
90 | - for (Cell c: new TreeSet<Cell>(sheet.getGroup(groupName).getCells())) { | |
91 | - Utils.printCell(c); | |
92 | - } | |
93 | - } | |
94 | - | |
95 | -} |
@@ -1,66 +0,0 @@ | ||
1 | -package com.nissy_ki_chi.ConsolePicocalc; | |
2 | - | |
3 | -import java.util.TreeSet; | |
4 | - | |
5 | -import com.nissy_ki_chi.jpicosheet.core.Book; | |
6 | -import com.nissy_ki_chi.jpicosheet.core.Cell; | |
7 | -import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
8 | - | |
9 | -public class CellCommand { | |
10 | - | |
11 | - void processListCmd(Sheet sheet, String[] cmdArr, String argStr) { | |
12 | - | |
13 | - if (cmdArr[1].equals("list") && cmdArr.length == 2) { | |
14 | - listCells(sheet); | |
15 | - } | |
16 | - | |
17 | - if (cmdArr[1].equals("delete") && cmdArr.length == 2) { | |
18 | - deleteCells(sheet, argStr); | |
19 | - } | |
20 | - | |
21 | - } | |
22 | - | |
23 | - private void deleteCells(Sheet sheet, String argStr) { | |
24 | - | |
25 | - for (String cellName: argStr.split(",")) { | |
26 | - sheet.deleteCell(cellName.trim()); | |
27 | - } | |
28 | - } | |
29 | - | |
30 | - void listCells(Sheet currentSheet) { | |
31 | - for (Cell c: new TreeSet<Cell>(currentSheet.getCells())) { | |
32 | - Utils.printCell(c); | |
33 | - } | |
34 | - } | |
35 | - | |
36 | - | |
37 | - void processCell(Book book, String line) { | |
38 | - | |
39 | - int idx = line.indexOf("="); | |
40 | - // "="が含まれている場合、セルへの値セット | |
41 | - if ((1 <= idx) && (idx < (line.length() -1))) { | |
42 | - String cellName = line.substring(0, idx); | |
43 | - String cellValue = line.substring(idx + 1); | |
44 | - System.out.println("セル名: " + cellName + " セル値: " + cellValue); | |
45 | - | |
46 | - Cell targetCell; | |
47 | - if (book.getResolver().isFullyQualifiedName(cellName)) { | |
48 | - String sheetName = book.getResolver().getSheetNameFromFullyQualifiedName(cellName); | |
49 | - targetCell = book.getSheet(sheetName).addCell(cellName); | |
50 | - targetCell.setValue(cellValue); | |
51 | - } else { | |
52 | - targetCell = book.getResolver().getCurrentSheet().addCell(cellName); | |
53 | - targetCell.setValue(cellValue); | |
54 | - } | |
55 | - Utils.printCell(targetCell); | |
56 | - } else { | |
57 | - // ”=”が含まれない場合、セル値の表示 | |
58 | - if (book.getResolver().cellExists(line)) { | |
59 | - Utils.printCell(book.getResolver().getCell(line)); | |
60 | - } else { | |
61 | - System.out.println(line + "というセルはありません。"); | |
62 | - } | |
63 | - } | |
64 | - } | |
65 | - | |
66 | -} |
@@ -1,185 +0,0 @@ | ||
1 | -package com.nissy_ki_chi.ConsolePicocalc; | |
2 | - | |
3 | -import java.io.BufferedReader; | |
4 | -import java.io.IOException; | |
5 | -import java.io.InputStreamReader; | |
6 | -import java.io.UnsupportedEncodingException; | |
7 | -import java.lang.reflect.Array; | |
8 | -import java.nio.file.Files; | |
9 | -import java.nio.file.Paths; | |
10 | -import java.util.ArrayList; | |
11 | -import java.util.HashMap; | |
12 | -import java.util.Map; | |
13 | -import java.util.TreeSet; | |
14 | - | |
15 | -import com.nissy_ki_chi.jpicosheet.core.Book; | |
16 | -import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
17 | - | |
18 | -public class ConsolePicocalc { | |
19 | - | |
20 | - | |
21 | -// Map<String, Book> _books = new HashMap<String, Book>(); | |
22 | -// String _bookCommand.setCurrentBook(null; | |
23 | - | |
24 | - BookCommand _bookCommand = new BookCommand(); | |
25 | - SheetCommand _sheetCommand = new SheetCommand(); | |
26 | - CellCommand _cellCommand = new CellCommand(); | |
27 | - GroupCommand _groupCommand = new GroupCommand(); | |
28 | - TableCommand _tableCommand = new TableCommand(); | |
29 | - | |
30 | - /** | |
31 | - * @param args | |
32 | - */ | |
33 | - public static void main(String[] args) { | |
34 | - // TODO 自動生成されたメソッド・スタブ | |
35 | - | |
36 | - ConsolePicocalc cp = new ConsolePicocalc(); | |
37 | - String filePath = null; | |
38 | - if (0 < args.length) { | |
39 | - filePath = args[0]; | |
40 | - } | |
41 | - cp.start(filePath); | |
42 | - | |
43 | - } | |
44 | - | |
45 | - | |
46 | - public void ConcolePicocalc() { | |
47 | - | |
48 | - } | |
49 | - | |
50 | - | |
51 | - public void start(String filePath) { | |
52 | - | |
53 | - Book book = null; | |
54 | - // 引数としてファイルが渡された場合はそれをロードする | |
55 | - if (filePath != null && Files.exists(Paths.get(filePath))) { | |
56 | - _bookCommand.setCurrentBookName("myBook"); | |
57 | - book = new Book(_bookCommand.getCurrentBookName()); | |
58 | - _bookCommand.load(book, filePath); | |
59 | - } else { | |
60 | - // そうでない場合はデフォルトシートを作成 | |
61 | - book = new Book("myBook"); | |
62 | - book.addSheet("Sheet1"); | |
63 | - this._bookCommand.setCurrentBookName(book.getName()); | |
64 | - } | |
65 | - this._bookCommand.getBooks().put(book.getName(), book); | |
66 | - | |
67 | - // コンソールから1行づつ読み込んで処理する | |
68 | - BufferedReader br = null; | |
69 | - try { | |
70 | - br = new BufferedReader(new InputStreamReader(System.in, "JISAutoDetect")); | |
71 | - } catch (UnsupportedEncodingException e1) { | |
72 | - e1.printStackTrace(); | |
73 | - } | |
74 | - | |
75 | - try { | |
76 | - String line; | |
77 | - while(true) { | |
78 | - try { | |
79 | - // プロンプト表示 | |
80 | - Book currentBook = _bookCommand.getCurrentBook(); | |
81 | - System.out.print("[" + _bookCommand.getCurrentBookName() + "]" + currentBook.getResolver().getCurrentSheet().getName() + ": "); | |
82 | - | |
83 | - // 入力がなくなったら終了 | |
84 | - if ((line = br.readLine().trim()) == null) { | |
85 | - break; | |
86 | - } | |
87 | - | |
88 | - // 未入力だったら何もしない | |
89 | - if (line.length() == 0) { | |
90 | - continue; | |
91 | - } | |
92 | - | |
93 | - // 終了コマンドが入力されたら終了 | |
94 | - if (line.equals(".quit")) { | |
95 | - break; | |
96 | - } | |
97 | - | |
98 | - // 1文字目がドットか否かでコマンドもしくはセル入力を判断 | |
99 | - if (line.charAt(0) == '.') { | |
100 | - processCommand(line); | |
101 | - } else { | |
102 | - _cellCommand.processCell(_bookCommand.getCurrentBook(), line); | |
103 | - } | |
104 | - } catch (Exception e) { | |
105 | - e.printStackTrace(); | |
106 | - } | |
107 | - } | |
108 | - } finally { | |
109 | - try { | |
110 | - br.close(); | |
111 | - } catch (IOException e) { | |
112 | - e.printStackTrace(); | |
113 | - } | |
114 | - } | |
115 | - } | |
116 | - | |
117 | - | |
118 | - private void processCommand(String line) { | |
119 | - | |
120 | - String cmdStr; | |
121 | - String argStr; | |
122 | - int idx = line.indexOf(" "); | |
123 | - if (0 < idx) { | |
124 | - cmdStr = line.substring(1, line.indexOf(" ")); | |
125 | - if (idx < line.length()) { | |
126 | - argStr = line.substring(idx+1); | |
127 | - } else { | |
128 | - argStr = ""; | |
129 | - } | |
130 | - } else { | |
131 | - cmdStr = line.substring(1); | |
132 | - argStr = ""; | |
133 | - } | |
134 | - String[] cmdArr = cmdStr.split("\\."); | |
135 | - | |
136 | - if (cmdArr[0].equals("book")) { | |
137 | - _bookCommand.processBookCmd(cmdArr, argStr); | |
138 | - return; | |
139 | - } | |
140 | - | |
141 | - if (cmdArr[0].equals("sheet")) { | |
142 | - Book book = _bookCommand.getCurrentBook(); | |
143 | - _sheetCommand.processSheetCmd(book, cmdArr, argStr); | |
144 | - return; | |
145 | - } | |
146 | - | |
147 | - if (cmdArr[0].equals("group")) { | |
148 | - Sheet sheet = _bookCommand.getCurrentBook().getResolver().getCurrentSheet(); | |
149 | - _groupCommand.processGroupCmd(sheet, cmdArr, argStr); | |
150 | - return; | |
151 | - } | |
152 | - | |
153 | - if (cmdArr[0].equals("table")) { | |
154 | - Sheet sheet = _bookCommand.getCurrentBook().getResolver().getCurrentSheet(); | |
155 | - _tableCommand.processTableCmd(sheet, cmdArr, argStr); | |
156 | - return; | |
157 | - } | |
158 | - | |
159 | - if (cmdArr[0].equals("list") && cmdArr.length == 1) { | |
160 | - Sheet sheet = _bookCommand.getCurrentBook().getResolver().getCurrentSheet(); | |
161 | - _cellCommand.listCells(sheet); | |
162 | - _groupCommand.listGroups(sheet); | |
163 | - _tableCommand.listTables(sheet); | |
164 | - return; | |
165 | - } else { | |
166 | - Sheet sheet = _bookCommand.getCurrentBook().getResolver().getCurrentSheet(); | |
167 | - _cellCommand.processListCmd(sheet, cmdArr, argStr); | |
168 | - return; | |
169 | - } | |
170 | - | |
171 | - | |
172 | - } | |
173 | - | |
174 | - private void listSheets(Book book) { | |
175 | - TreeSet<String> sheetNames = new TreeSet<String>(); | |
176 | - for (Sheet s: book.getSheets()) { | |
177 | - sheetNames.add(s.getName()); | |
178 | - } | |
179 | - for (String sName: sheetNames) { | |
180 | - System.out.println(sName); | |
181 | - } | |
182 | - } | |
183 | - | |
184 | - | |
185 | -} |
@@ -1,52 +0,0 @@ | ||
1 | -package com.nissy_ki_chi.ConsolePicocalc; | |
2 | - | |
3 | -import com.nissy_ki_chi.jpicosheet.core.Cell; | |
4 | -import com.nissy_ki_chi.jpicosheet.core.Group; | |
5 | -import com.nissy_ki_chi.jpicosheet.core.Cell.CellType; | |
6 | - | |
7 | -public class Utils { | |
8 | - | |
9 | - /** | |
10 | - * セルを表示します。 | |
11 | - * @param c 表示するセル | |
12 | - */ | |
13 | - static void printCell(Cell c) { | |
14 | - printCellNoLn(c); | |
15 | - System.out.println(""); | |
16 | - } | |
17 | - | |
18 | - /** | |
19 | - * セルを表示します。セル表示後改行しません。 | |
20 | - * @param c 表示するセル | |
21 | - */ | |
22 | - static void printCellNoLn(Cell c) { | |
23 | - if (c.getCellType() == CellType.FORMULA) { | |
24 | - System.out.print(c.getName() + "\t" + c.getFormula() + "\t" + c.getValueString()); | |
25 | - } else { | |
26 | - System.out.print(c.getName() + "\t" + c.getValueString()); | |
27 | - } | |
28 | - } | |
29 | - | |
30 | - /** | |
31 | - * 渡された文字列の先頭から、最初のスペースの前までの文字列を返します。 | |
32 | - * @param argStr | |
33 | - * @return | |
34 | - */ | |
35 | - static String getTargetHeadFromArgStr(String argStr) { | |
36 | - // argStr からグループ名と追加するセル名の配列を得る | |
37 | - int gnIdx = argStr.indexOf(" "); | |
38 | - return argStr.substring(0, gnIdx); | |
39 | - } | |
40 | - | |
41 | - /** | |
42 | - * 渡された文字列に含まれる最初のスペース以降の文字列から、カンマで区切られた文字列を配列にして返します。 | |
43 | - * @param argStr | |
44 | - * @return | |
45 | - */ | |
46 | - static String[] getTargetBodyFromArgStr(String argStr) { | |
47 | - // argStr からグループ名と追加するセル名の配列を得る | |
48 | - int gnIdx = argStr.indexOf(" "); | |
49 | - String body = argStr.substring(gnIdx + 1); | |
50 | - return body.trim().split(","); | |
51 | - } | |
52 | -} |
@@ -0,0 +1,70 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | + | |
3 | +<project name="ConsolePicocalc" basedir="." default="all"> | |
4 | + | |
5 | + <description>build ConsolePicocalc JAR file</description> | |
6 | + | |
7 | + <!-- Properties --> | |
8 | + <property name="projectName" value="ConsolePicocalc"/> | |
9 | + <property name="version" value="0.1"/> | |
10 | + <property name="jarFileName" value="${projectName}-${version}.jar"/> | |
11 | + | |
12 | + <property name="sourceDir" value="src"/> | |
13 | + <property name="binDir" value="bin"/> | |
14 | + <property name="jarDir" value="jarfile"/> | |
15 | + <property name="jarWorkDir" value="jarwork"/> | |
16 | + <property name="javadocDir" value="doc"/> | |
17 | + <property name="distDir" value="dist"/> | |
18 | + <property name="exeDir" value="exe"/> | |
19 | + | |
20 | + <!-- property name="jpicosheetJar" value="C:/Users/Yusuke/Develop/Java/PicoSheet-Workspace/JPicosheet/jarfile/JPicosheet-0.1.4.jar"/ --> | |
21 | + <property name="jpicosheetJar" value="/home/yusuke/Develop/Eclipse-workspaces/PicoSheet-Workspace/JPicosheet/jarfile/JPicosheet-0.1.4.jar"/> | |
22 | + | |
23 | + <target name="all" depends="init,makedir,copyJarFile,jar,makeExe,clean" /> | |
24 | + | |
25 | + <target name="init"> | |
26 | + <tstamp></tstamp> | |
27 | + <delete dir="${jarWorkDir}"/> | |
28 | + <delete file="${jarDir}/${jarFileName}"/> | |
29 | + <delete file="${distDir}/${projectName}"/> | |
30 | + <delete file="${exeDir}"/> | |
31 | + </target> | |
32 | + | |
33 | + <target name="makedir"> | |
34 | + <mkdir dir="${jarDir}"/> | |
35 | + <mkdir dir="${jarWorkDir}"/> | |
36 | + <mkdir dir="${distDir}"/> | |
37 | + <mkdir dir="${exeDir}"/> | |
38 | + </target> | |
39 | + | |
40 | + <target name="copyJarFile" depends="makedir"> | |
41 | + <copy todir="${jarWorkDir}"> | |
42 | + <fileset dir="${binDir}"> | |
43 | + <include name="**/*.class"/> | |
44 | + <exclude name="test/**"/> | |
45 | + </fileset> | |
46 | + </copy> | |
47 | + </target> | |
48 | + | |
49 | + <target name="jar" depends="copyJarFile"> | |
50 | + <jar destfile="${jarDir}/${jarFileName}"> | |
51 | + <zipfileset dir="${jarWorkDir}" /> | |
52 | + </jar> | |
53 | + </target> | |
54 | + | |
55 | + <target name="makeExe" depends="jar"> | |
56 | + <copy todir="${exeDir}"> | |
57 | + <fileset file="${jpicosheetJar}"/> | |
58 | + <fileset file="${jarDir}/${jarFileName}"/> | |
59 | + <fileset file="conpico.bat"/> | |
60 | + </copy> | |
61 | + </target> | |
62 | + | |
63 | + | |
64 | + <target name="clean"> | |
65 | + <delete dir="${jarWorkDir}"/> | |
66 | + </target> | |
67 | + | |
68 | + | |
69 | +</project> | |
70 | + |
@@ -0,0 +1,10 @@ | ||
1 | +echo off | |
2 | + | |
3 | +set EXEDIR=%~dp0 | |
4 | +set CLASSPATH=%EXEDIR%\ConsolePicocalc-0.1.jar;%EXEDIR%\JPicosheet-0.1.4.jar | |
5 | + | |
6 | +echo %CLASSPATH% | |
7 | + | |
8 | +java -classpath %CLASSPATH% com.nissy_ki_chi.ConsolePicocalc.ConsolePicocalc | |
9 | + | |
10 | +pause |
@@ -0,0 +1,91 @@ | ||
1 | +コマンド | |
2 | + | |
3 | +●●ドット「.」で始まる場合、コマンドである。 | |
4 | + | |
5 | +---------------Book用 | |
6 | + | |
7 | +.book.add ブック名 | |
8 | +新しいブックの作成 | |
9 | + | |
10 | +.book.current ブック名 | |
11 | +カレントブックの変更 | |
12 | + | |
13 | +.book.list | |
14 | +ブックの一覧を表示 | |
15 | + | |
16 | +.book.functions | |
17 | +カレントブックで使用可能な関数一覧を表示 | |
18 | + | |
19 | +.book.load | |
20 | +カレントブックに指定したファイルの内容を読み込む | |
21 | + | |
22 | +.book.save | |
23 | +カレントブックの内容を指定したファイルに書き込み | |
24 | + | |
25 | + | |
26 | +---------------Sheet用 | |
27 | + | |
28 | +.sheet.add シート名 | |
29 | +カレントブックに新しいシートを追加 | |
30 | + | |
31 | +.sheet.list | |
32 | +カレントブックのシート一覧を表示 | |
33 | + | |
34 | +.sheet.current シート名 | |
35 | +カレントシートの変更 | |
36 | + | |
37 | + | |
38 | +---------------Cell用 | |
39 | +.list | |
40 | +カレントシートのセル一覧を表示 | |
41 | + | |
42 | + | |
43 | +---------------Group用 | |
44 | +.group.list | |
45 | +カレントシートのグループ一覧を表示 | |
46 | + | |
47 | +.group.list.cells グループ名 | |
48 | +カレントシートの指定したグループに属するセル一覧を表示 | |
49 | + | |
50 | +.group.add グループ名 | |
51 | +カレントシートに新しいグループを追加 | |
52 | + | |
53 | +.group.delete グループ名 | |
54 | +カレントシートのグループを削除 | |
55 | + | |
56 | +.group.cells.add グループ名 セル名 セル名... | |
57 | +カレントシートの指定したグループに指定したセルを追加 | |
58 | + | |
59 | +.group.cells.remove グループ名 セル名 セル名... | |
60 | +カレントシートの指定したグループから指定したセルを削除 | |
61 | + | |
62 | + | |
63 | + | |
64 | +---------------Table用 | |
65 | + | |
66 | +.list.tables | |
67 | +カレントシートのテーブル一覧を表示 | |
68 | + | |
69 | +.list.table.cells テーブル名 | |
70 | +カレントシートの指定したテーブルに属するセル一覧を表示 | |
71 | + | |
72 | + | |
73 | + | |
74 | +●●ドットで始まらない場合、カレントブックのカレントシートにあるセルに対する操作である | |
75 | + | |
76 | +<セル名> | |
77 | +セルの値を表示する | |
78 | + | |
79 | +<セル名> formula | |
80 | +セルの式を表示する。セルが式でない場合エラー。 | |
81 | + | |
82 | +<セル名>=値 | |
83 | +セルに値をセットする。 | |
84 | +式をセットする場合、<セル名>==式 とイコールを続けて書く。 | |
85 | + | |
86 | +<セル名>.label ラベル | |
87 | +セルにラベルをセットする | |
88 | + | |
89 | + | |
90 | + | |
91 | + |
@@ -0,0 +1,185 @@ | ||
1 | +package com.nissy_ki_chi.ConsolePicocalc; | |
2 | + | |
3 | +import java.io.BufferedReader; | |
4 | +import java.io.IOException; | |
5 | +import java.io.InputStreamReader; | |
6 | +import java.io.UnsupportedEncodingException; | |
7 | +import java.lang.reflect.Array; | |
8 | +import java.nio.file.Files; | |
9 | +import java.nio.file.Paths; | |
10 | +import java.util.ArrayList; | |
11 | +import java.util.HashMap; | |
12 | +import java.util.Map; | |
13 | +import java.util.TreeSet; | |
14 | + | |
15 | +import com.nissy_ki_chi.jpicosheet.core.Book; | |
16 | +import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
17 | + | |
18 | +public class ConsolePicocalc { | |
19 | + | |
20 | + | |
21 | +// Map<String, Book> _books = new HashMap<String, Book>(); | |
22 | +// String _bookCommand.setCurrentBook(null; | |
23 | + | |
24 | + BookCommand _bookCommand = new BookCommand(); | |
25 | + SheetCommand _sheetCommand = new SheetCommand(); | |
26 | + CellCommand _cellCommand = new CellCommand(); | |
27 | + GroupCommand _groupCommand = new GroupCommand(); | |
28 | + TableCommand _tableCommand = new TableCommand(); | |
29 | + | |
30 | + /** | |
31 | + * @param args | |
32 | + */ | |
33 | + public static void main(String[] args) { | |
34 | + // TODO 自動生成されたメソッド・スタブ | |
35 | + | |
36 | + ConsolePicocalc cp = new ConsolePicocalc(); | |
37 | + String filePath = null; | |
38 | + if (0 < args.length) { | |
39 | + filePath = args[0]; | |
40 | + } | |
41 | + cp.start(filePath); | |
42 | + | |
43 | + } | |
44 | + | |
45 | + | |
46 | + public void ConcolePicocalc() { | |
47 | + | |
48 | + } | |
49 | + | |
50 | + | |
51 | + public void start(String filePath) { | |
52 | + | |
53 | + Book book = null; | |
54 | + // 引数としてファイルが渡された場合はそれをロードする | |
55 | + if (filePath != null && Files.exists(Paths.get(filePath))) { | |
56 | + _bookCommand.setCurrentBookName("myBook"); | |
57 | + book = new Book(_bookCommand.getCurrentBookName()); | |
58 | + _bookCommand.load(book, filePath); | |
59 | + } else { | |
60 | + // そうでない場合はデフォルトシートを作成 | |
61 | + book = new Book("myBook"); | |
62 | + book.addSheet("Sheet1"); | |
63 | + this._bookCommand.setCurrentBookName(book.getName()); | |
64 | + } | |
65 | + this._bookCommand.getBooks().put(book.getName(), book); | |
66 | + | |
67 | + // コンソールから1行づつ読み込んで処理する | |
68 | + BufferedReader br = null; | |
69 | + try { | |
70 | + br = new BufferedReader(new InputStreamReader(System.in, "JISAutoDetect")); | |
71 | + } catch (UnsupportedEncodingException e1) { | |
72 | + e1.printStackTrace(); | |
73 | + } | |
74 | + | |
75 | + try { | |
76 | + String line; | |
77 | + while(true) { | |
78 | + try { | |
79 | + // プロンプト表示 | |
80 | + Book currentBook = _bookCommand.getCurrentBook(); | |
81 | + System.out.print("[" + _bookCommand.getCurrentBookName() + "]" + currentBook.getResolver().getCurrentSheet().getName() + ": "); | |
82 | + | |
83 | + // 入力がなくなったら終了 | |
84 | + if ((line = br.readLine().trim()) == null) { | |
85 | + break; | |
86 | + } | |
87 | + | |
88 | + // 未入力だったら何もしない | |
89 | + if (line.length() == 0) { | |
90 | + continue; | |
91 | + } | |
92 | + | |
93 | + // 終了コマンドが入力されたら終了 | |
94 | + if (line.equals(".quit")) { | |
95 | + break; | |
96 | + } | |
97 | + | |
98 | + // 1文字目がドットか否かでコマンドもしくはセル入力を判断 | |
99 | + if (line.charAt(0) == '.') { | |
100 | + processCommand(line); | |
101 | + } else { | |
102 | + _cellCommand.processCell(_bookCommand.getCurrentBook(), line); | |
103 | + } | |
104 | + } catch (Exception e) { | |
105 | + e.printStackTrace(); | |
106 | + } | |
107 | + } | |
108 | + } finally { | |
109 | + try { | |
110 | + br.close(); | |
111 | + } catch (IOException e) { | |
112 | + e.printStackTrace(); | |
113 | + } | |
114 | + } | |
115 | + } | |
116 | + | |
117 | + | |
118 | + private void processCommand(String line) { | |
119 | + | |
120 | + String cmdStr; | |
121 | + String argStr; | |
122 | + int idx = line.indexOf(" "); | |
123 | + if (0 < idx) { | |
124 | + cmdStr = line.substring(1, line.indexOf(" ")); | |
125 | + if (idx < line.length()) { | |
126 | + argStr = line.substring(idx+1); | |
127 | + } else { | |
128 | + argStr = ""; | |
129 | + } | |
130 | + } else { | |
131 | + cmdStr = line.substring(1); | |
132 | + argStr = ""; | |
133 | + } | |
134 | + String[] cmdArr = cmdStr.split("\\."); | |
135 | + | |
136 | + if (cmdArr[0].equals("book")) { | |
137 | + _bookCommand.processBookCmd(cmdArr, argStr); | |
138 | + return; | |
139 | + } | |
140 | + | |
141 | + if (cmdArr[0].equals("sheet")) { | |
142 | + Book book = _bookCommand.getCurrentBook(); | |
143 | + _sheetCommand.processSheetCmd(book, cmdArr, argStr); | |
144 | + return; | |
145 | + } | |
146 | + | |
147 | + if (cmdArr[0].equals("group")) { | |
148 | + Sheet sheet = _bookCommand.getCurrentBook().getResolver().getCurrentSheet(); | |
149 | + _groupCommand.processGroupCmd(sheet, cmdArr, argStr); | |
150 | + return; | |
151 | + } | |
152 | + | |
153 | + if (cmdArr[0].equals("table")) { | |
154 | + Sheet sheet = _bookCommand.getCurrentBook().getResolver().getCurrentSheet(); | |
155 | + _tableCommand.processTableCmd(sheet, cmdArr, argStr); | |
156 | + return; | |
157 | + } | |
158 | + | |
159 | + if (cmdArr[0].equals("list") && cmdArr.length == 1) { | |
160 | + Sheet sheet = _bookCommand.getCurrentBook().getResolver().getCurrentSheet(); | |
161 | + _cellCommand.listCells(sheet); | |
162 | + _groupCommand.listGroups(sheet); | |
163 | + _tableCommand.listTables(sheet); | |
164 | + return; | |
165 | + } else { | |
166 | + Sheet sheet = _bookCommand.getCurrentBook().getResolver().getCurrentSheet(); | |
167 | + _cellCommand.processListCmd(sheet, cmdArr, argStr); | |
168 | + return; | |
169 | + } | |
170 | + | |
171 | + | |
172 | + } | |
173 | + | |
174 | + private void listSheets(Book book) { | |
175 | + TreeSet<String> sheetNames = new TreeSet<String>(); | |
176 | + for (Sheet s: book.getSheets()) { | |
177 | + sheetNames.add(s.getName()); | |
178 | + } | |
179 | + for (String sName: sheetNames) { | |
180 | + System.out.println(sName); | |
181 | + } | |
182 | + } | |
183 | + | |
184 | + | |
185 | +} |
@@ -0,0 +1,52 @@ | ||
1 | +package com.nissy_ki_chi.ConsolePicocalc; | |
2 | + | |
3 | +import com.nissy_ki_chi.jpicosheet.core.Cell; | |
4 | +import com.nissy_ki_chi.jpicosheet.core.Group; | |
5 | +import com.nissy_ki_chi.jpicosheet.core.Cell.CellType; | |
6 | + | |
7 | +public class Utils { | |
8 | + | |
9 | + /** | |
10 | + * セルを表示します。 | |
11 | + * @param c 表示するセル | |
12 | + */ | |
13 | + static void printCell(Cell c) { | |
14 | + printCellNoLn(c); | |
15 | + System.out.println(""); | |
16 | + } | |
17 | + | |
18 | + /** | |
19 | + * セルを表示します。セル表示後改行しません。 | |
20 | + * @param c 表示するセル | |
21 | + */ | |
22 | + static void printCellNoLn(Cell c) { | |
23 | + if (c.getCellType() == CellType.FORMULA) { | |
24 | + System.out.print(c.getName() + "\t" + c.getFormula() + "\t" + c.getValueString()); | |
25 | + } else { | |
26 | + System.out.print(c.getName() + "\t" + c.getValueString()); | |
27 | + } | |
28 | + } | |
29 | + | |
30 | + /** | |
31 | + * 渡された文字列の先頭から、最初のスペースの前までの文字列を返します。 | |
32 | + * @param argStr | |
33 | + * @return | |
34 | + */ | |
35 | + static String getTargetHeadFromArgStr(String argStr) { | |
36 | + // argStr からグループ名と追加するセル名の配列を得る | |
37 | + int gnIdx = argStr.indexOf(" "); | |
38 | + return argStr.substring(0, gnIdx); | |
39 | + } | |
40 | + | |
41 | + /** | |
42 | + * 渡された文字列に含まれる最初のスペース以降の文字列から、カンマで区切られた文字列を配列にして返します。 | |
43 | + * @param argStr | |
44 | + * @return | |
45 | + */ | |
46 | + static String[] getTargetBodyFromArgStr(String argStr) { | |
47 | + // argStr からグループ名と追加するセル名の配列を得る | |
48 | + int gnIdx = argStr.indexOf(" "); | |
49 | + String body = argStr.substring(gnIdx + 1); | |
50 | + return body.trim().split(","); | |
51 | + } | |
52 | +} |
@@ -0,0 +1,36 @@ | ||
1 | +package com.nissy_ki_chi.ConsolePicocalc; | |
2 | + | |
3 | +import com.nissy_ki_chi.jpicosheet.core.Cell; | |
4 | +import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
5 | +import com.nissy_ki_chi.jpicosheet.core.Table; | |
6 | + | |
7 | +public class TableCommand { | |
8 | + | |
9 | + void listTableCells(Sheet currentSheet, String tableName) { | |
10 | + Table t = currentSheet.getTable(tableName); | |
11 | + int rowSize = t.getRowSize(); | |
12 | + int colSize = t.getColSize(); | |
13 | + for (int rowIdx = 0; rowIdx < rowSize; rowIdx++) { | |
14 | + for (int colIdx = 0; colIdx < colSize; colIdx++) { | |
15 | + Cell c = t.getCell(rowIdx, colIdx); | |
16 | + Utils.printCellNoLn(c); | |
17 | + if (colIdx < colSize -1) { | |
18 | + System.out.println("\t"); | |
19 | + } | |
20 | + } | |
21 | + System.out.println(""); | |
22 | + } | |
23 | + } | |
24 | + | |
25 | + void listTables(Sheet currentSheet) { | |
26 | + for (Table t: currentSheet.getTables()) { | |
27 | + System.out.println(t.getName()); | |
28 | + } | |
29 | + } | |
30 | + | |
31 | + void processTableCmd(Sheet sheet, String[] cmdArr, String argStr) { | |
32 | + // TODO 自動生成されたメソッド・スタブ | |
33 | + | |
34 | + } | |
35 | + | |
36 | +} |
@@ -0,0 +1,36 @@ | ||
1 | +package com.nissy_ki_chi.ConsolePicocalc; | |
2 | + | |
3 | +import java.util.List; | |
4 | +import java.util.TreeSet; | |
5 | + | |
6 | +import com.nissy_ki_chi.jpicosheet.core.Book; | |
7 | +import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
8 | + | |
9 | +public class SheetCommand { | |
10 | + | |
11 | + public void processSheetCmd(Book book, String[] cmdArr, String argStr) { | |
12 | + | |
13 | + // シート追加 | |
14 | + if (cmdArr[1].equals("add")) { | |
15 | + book.addSheet(argStr); | |
16 | + } | |
17 | + | |
18 | + // カレントシート変更 | |
19 | + if (cmdArr[1].equals("current")) { | |
20 | + book.getResolver().setCurrentSheet(book.getSheet(argStr)); | |
21 | + } | |
22 | + | |
23 | + // シート名一覧 | |
24 | + if (cmdArr[1].equals("list")) { | |
25 | + TreeSet<String> sheetNames = new TreeSet<String>(); | |
26 | + List<Sheet> sheets = book.getSheets(); | |
27 | + for (Sheet s: sheets) { | |
28 | + sheetNames.add(s.getName()); | |
29 | + } | |
30 | + for (String name: sheetNames) { | |
31 | + System.out.println(name); | |
32 | + } | |
33 | + } | |
34 | + } | |
35 | + | |
36 | +} |
@@ -0,0 +1,131 @@ | ||
1 | +package com.nissy_ki_chi.ConsolePicocalc; | |
2 | + | |
3 | +import java.io.BufferedReader; | |
4 | +import java.io.BufferedWriter; | |
5 | +import java.io.FileInputStream; | |
6 | +import java.io.FileWriter; | |
7 | +import java.io.IOException; | |
8 | +import java.io.InputStreamReader; | |
9 | +import java.util.Arrays; | |
10 | +import java.util.HashMap; | |
11 | +import java.util.Map; | |
12 | +import java.util.TreeSet; | |
13 | + | |
14 | +import com.nissy_ki_chi.jpicosheet.core.Book; | |
15 | +import com.nissy_ki_chi.jpicosheet.core.ConcurrentBookWrapper; | |
16 | +import com.nissy_ki_chi.jpicosheet.util.SimpleReader; | |
17 | +import com.nissy_ki_chi.jpicosheet.util.SimpleWriter; | |
18 | + | |
19 | +public class BookCommand { | |
20 | + | |
21 | + String getCurrentBookName() { | |
22 | + return _currentBookName; | |
23 | + } | |
24 | + | |
25 | + void setCurrentBookName(String bookName) { | |
26 | + this._currentBookName = bookName; | |
27 | + } | |
28 | + | |
29 | + Map<String, Book> getBooks() { | |
30 | + return _books; | |
31 | + } | |
32 | + | |
33 | + Book getCurrentBook() { | |
34 | + return this._books.get(_currentBookName); | |
35 | + } | |
36 | + | |
37 | + Book getBook(String bookName) { | |
38 | + return this._books.get(bookName); | |
39 | + } | |
40 | + | |
41 | + Map<String, Book> _books = new HashMap<String, Book>(); | |
42 | + String _currentBookName = null; | |
43 | + | |
44 | + void processBookCmd(String[] cmdArr, String argStr) { | |
45 | + | |
46 | + if (cmdArr.length == 1) { | |
47 | + return; | |
48 | + } | |
49 | + | |
50 | + // 新しいブックの追加 | |
51 | + if (cmdArr[1].equals("add")) { | |
52 | + Book newBook = new Book(argStr); | |
53 | + newBook.addSheet("sheet1"); | |
54 | + _books.put(newBook.getName(), newBook); | |
55 | + } | |
56 | + | |
57 | + // カレントブックの変更 | |
58 | + if (cmdArr[1].equals("current")) { | |
59 | + if (_books.containsKey(argStr)) { | |
60 | + this._currentBookName = argStr; | |
61 | + } | |
62 | + } | |
63 | + | |
64 | + // ブックの一覧を表示 | |
65 | + if (cmdArr[1].equals("list")) { | |
66 | + for (String bookName: new TreeSet<String>(_books.keySet())) { | |
67 | + System.out.println(bookName); | |
68 | + } | |
69 | + } | |
70 | + | |
71 | + // カレントブックで使用可能な関数一覧を表示 | |
72 | + if (cmdArr[1].equals("functions")) { | |
73 | + String[] functionNames = _books.get(_currentBookName).getFunctionNames(); | |
74 | + Arrays.sort(functionNames); | |
75 | + for (String funcName: Arrays.asList(functionNames)) { | |
76 | + System.out.println(funcName); | |
77 | + } | |
78 | + } | |
79 | + | |
80 | + // ファイル読み込み | |
81 | + if (cmdArr[1].equals("load")) { | |
82 | + String filePath = argStr; | |
83 | + Book book = _books.get(_currentBookName); | |
84 | + load(book, filePath); | |
85 | + } | |
86 | + | |
87 | + // ファイル書き込み | |
88 | + if (cmdArr[1].equals("save")) { | |
89 | + String filePath = argStr; | |
90 | + Book book = _books.get(_currentBookName); | |
91 | + SimpleWriter sw = new SimpleWriter(new ConcurrentBookWrapper(book)); | |
92 | + BufferedWriter w = null; | |
93 | + try { | |
94 | + w = new BufferedWriter(new FileWriter(filePath)); | |
95 | + sw.write(w); | |
96 | + } catch (Exception e) { | |
97 | + e.printStackTrace(); | |
98 | + } finally { | |
99 | + if (w != null) { | |
100 | + try { | |
101 | + w.close(); | |
102 | + } catch (IOException e) { | |
103 | + e.printStackTrace(); | |
104 | + } | |
105 | + } | |
106 | + } | |
107 | + } | |
108 | + | |
109 | + } | |
110 | + | |
111 | + void load(Book book, String filePath) { | |
112 | + SimpleReader sr = new SimpleReader(new ConcurrentBookWrapper(book)); | |
113 | + BufferedReader fileBR = null; | |
114 | + try { | |
115 | + fileBR = new BufferedReader(new InputStreamReader(new FileInputStream(filePath))); | |
116 | + sr.Read(fileBR); | |
117 | + } catch (Exception e) { | |
118 | + e.printStackTrace(); | |
119 | + } finally { | |
120 | + if (fileBR != null) { | |
121 | + try { | |
122 | + fileBR.close(); | |
123 | + } catch (IOException e) { | |
124 | + e.printStackTrace(); | |
125 | + } | |
126 | + } | |
127 | + } | |
128 | + | |
129 | + } | |
130 | + | |
131 | +} |
@@ -0,0 +1,95 @@ | ||
1 | +package com.nissy_ki_chi.ConsolePicocalc; | |
2 | + | |
3 | +import java.util.Set; | |
4 | +import java.util.TreeMap; | |
5 | +import java.util.TreeSet; | |
6 | + | |
7 | +import com.nissy_ki_chi.jpicosheet.core.Cell; | |
8 | +import com.nissy_ki_chi.jpicosheet.core.Group; | |
9 | +import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
10 | + | |
11 | +public class GroupCommand { | |
12 | + | |
13 | + void processGroupCmd(Sheet sheet, String[] cmdArr, String argStr) { | |
14 | + | |
15 | + // このシートのグループ一覧表示 | |
16 | + if (cmdArr[1].equals("list") && cmdArr.length == 2) { | |
17 | + Set<Group> groups = sheet.getGroups(); | |
18 | + TreeSet<String> gNames = new TreeSet<String>(); | |
19 | + for (Group g: groups) { | |
20 | + gNames.add(g.getName()); | |
21 | + } | |
22 | + for (String s: gNames) { | |
23 | + System.out.println(s); | |
24 | + } | |
25 | + return; | |
26 | + } | |
27 | + | |
28 | + // 指定グループ内のセル表示 | |
29 | + if (cmdArr[1].equals("list") && cmdArr[2].equals("cells")) { | |
30 | + Group group = sheet.getGroup(argStr); | |
31 | + TreeMap<String, Cell> tCell = new TreeMap<String, Cell>(); | |
32 | + for (Cell c: group.getCells()) { | |
33 | + tCell.put(c.getName(), c); | |
34 | + } | |
35 | + for (Cell c: tCell.values()) { | |
36 | + Utils.printCell(c); | |
37 | + } | |
38 | + } | |
39 | + | |
40 | + // グループ追加 | |
41 | + if (cmdArr[1].equals("add")) { | |
42 | + sheet.addGroup(argStr); | |
43 | + } | |
44 | + | |
45 | + // グループ削除 | |
46 | + if (cmdArr[1].equals("delete")) { | |
47 | + if (sheet.groupExists(argStr)) { | |
48 | + sheet.deleteGroup(argStr); | |
49 | + } | |
50 | + } | |
51 | + | |
52 | + // グループにセル追加 | |
53 | + if (cmdArr[1].equals("cells") && cmdArr[2].equals("add")) { | |
54 | + | |
55 | + Group group = sheet.getGroup(Utils.getTargetHeadFromArgStr(argStr)); | |
56 | + String[] cellNamesArr = Utils.getTargetBodyFromArgStr(argStr); | |
57 | + // セルをグループに追加 | |
58 | + for (String cellName: cellNamesArr) { | |
59 | + cellName = cellName.trim(); | |
60 | + if (cellName.length() > 0) { | |
61 | + group.addCell(cellName); | |
62 | + } | |
63 | + } | |
64 | + } | |
65 | + | |
66 | + // グループからセル削除 | |
67 | + if (cmdArr[1].equals("cells") && cmdArr[2].equals("remove")) { | |
68 | + | |
69 | + Group group = sheet.getGroup(Utils.getTargetHeadFromArgStr(argStr)); | |
70 | + String[] cellNamesArr = Utils.getTargetBodyFromArgStr(argStr); | |
71 | + // セルをグループから削除 | |
72 | + for (String cellName: cellNamesArr) { | |
73 | + cellName = cellName.trim(); | |
74 | + if (cellName.length() > 0) { | |
75 | + group.removeCell(cellName); | |
76 | + } | |
77 | + } | |
78 | + | |
79 | + } | |
80 | + | |
81 | + } | |
82 | + | |
83 | + void listGroups(Sheet sheet) { | |
84 | + for (Group g: sheet.getGroups() ) { | |
85 | + System.out.println(g.getName()); | |
86 | + } | |
87 | + } | |
88 | + | |
89 | + void listGroupCells(Sheet sheet, String groupName) { | |
90 | + for (Cell c: new TreeSet<Cell>(sheet.getGroup(groupName).getCells())) { | |
91 | + Utils.printCell(c); | |
92 | + } | |
93 | + } | |
94 | + | |
95 | +} |
@@ -0,0 +1,66 @@ | ||
1 | +package com.nissy_ki_chi.ConsolePicocalc; | |
2 | + | |
3 | +import java.util.TreeSet; | |
4 | + | |
5 | +import com.nissy_ki_chi.jpicosheet.core.Book; | |
6 | +import com.nissy_ki_chi.jpicosheet.core.Cell; | |
7 | +import com.nissy_ki_chi.jpicosheet.core.Sheet; | |
8 | + | |
9 | +public class CellCommand { | |
10 | + | |
11 | + void processListCmd(Sheet sheet, String[] cmdArr, String argStr) { | |
12 | + | |
13 | + if (cmdArr[1].equals("list") && cmdArr.length == 2) { | |
14 | + listCells(sheet); | |
15 | + } | |
16 | + | |
17 | + if (cmdArr[1].equals("delete") && cmdArr.length == 2) { | |
18 | + deleteCells(sheet, argStr); | |
19 | + } | |
20 | + | |
21 | + } | |
22 | + | |
23 | + private void deleteCells(Sheet sheet, String argStr) { | |
24 | + | |
25 | + for (String cellName: argStr.split(",")) { | |
26 | + sheet.deleteCell(cellName.trim()); | |
27 | + } | |
28 | + } | |
29 | + | |
30 | + void listCells(Sheet currentSheet) { | |
31 | + for (Cell c: new TreeSet<Cell>(currentSheet.getCells())) { | |
32 | + Utils.printCell(c); | |
33 | + } | |
34 | + } | |
35 | + | |
36 | + | |
37 | + void processCell(Book book, String line) { | |
38 | + | |
39 | + int idx = line.indexOf("="); | |
40 | + // "="が含まれている場合、セルへの値セット | |
41 | + if ((1 <= idx) && (idx < (line.length() -1))) { | |
42 | + String cellName = line.substring(0, idx); | |
43 | + String cellValue = line.substring(idx + 1); | |
44 | + System.out.println("セル名: " + cellName + " セル値: " + cellValue); | |
45 | + | |
46 | + Cell targetCell; | |
47 | + if (book.getResolver().isFullyQualifiedName(cellName)) { | |
48 | + String sheetName = book.getResolver().getSheetNameFromFullyQualifiedName(cellName); | |
49 | + targetCell = book.getSheet(sheetName).addCell(cellName); | |
50 | + targetCell.setValue(cellValue); | |
51 | + } else { | |
52 | + targetCell = book.getResolver().getCurrentSheet().addCell(cellName); | |
53 | + targetCell.setValue(cellValue); | |
54 | + } | |
55 | + Utils.printCell(targetCell); | |
56 | + } else { | |
57 | + // ”=”が含まれない場合、セル値の表示 | |
58 | + if (book.getResolver().cellExists(line)) { | |
59 | + Utils.printCell(book.getResolver().getCell(line)); | |
60 | + } else { | |
61 | + System.out.println(line + "というセルはありません。"); | |
62 | + } | |
63 | + } | |
64 | + } | |
65 | + | |
66 | +} |