diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..5b7e300
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+MiniDB
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..5db8ab8
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.gitignore b/src/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/src/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/src/.idea/misc.xml b/src/.idea/misc.xml
new file mode 100644
index 0000000..09e91bf
--- /dev/null
+++ b/src/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/modules.xml b/src/.idea/modules.xml
new file mode 100644
index 0000000..e083187
--- /dev/null
+++ b/src/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/uiDesigner.xml b/src/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/src/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/vcs.xml b/src/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/src/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/CliBuilder.java b/src/CliBuilder.java
new file mode 100644
index 0000000..438bbde
--- /dev/null
+++ b/src/CliBuilder.java
@@ -0,0 +1,77 @@
+import InputCommand.ArgStrategy;
+import InputCommand.UseSetCurrentDb;
+import InputCommand.*;
+import minidb.xmlParser.CurrentDBObserver;
+
+import java.util.ArrayList;
+
+public class CliBuilder {
+ public cli buildCli () {
+ cli c = new cli();
+
+ ArrayList argslist = new ArrayList<>();
+ ArrayList usedInCurrentDBO = new ArrayList<>();
+
+ addArg add = new addArg();
+ argslist.add(add);
+ usedInCurrentDBO.add(add);
+
+ deleteArg delete = new deleteArg();
+ argslist.add(delete);
+ usedInCurrentDBO.add(delete);
+
+ readArg read = new readArg();
+ argslist.add(read);
+ usedInCurrentDBO.add(read);
+
+ schemaArg schema = new schemaArg();
+ argslist.add(schema);
+ usedInCurrentDBO.add(schema);
+
+ useArg use = new useArg();
+ argslist.add(use);
+// usedInCurrentDBO.add(use);
+ CurrentDBObserver observer = new CurrentDBObserver(usedInCurrentDBO);
+ use.setCurrentDBO(observer);
+
+ dropArg drop = new dropArg();
+ argslist.add(drop);
+
+ helpArg help = new helpArg();
+ argslist.add(help);
+
+ listArg list = new listArg();
+ argslist.add(list);
+
+ newArg newA = new newArg();
+ argslist.add(newA);
+
+ c.setArgsList(argslist);
+
+ return c;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/InputCommand/ArgStrategy.java b/src/InputCommand/ArgStrategy.java
new file mode 100644
index 0000000..dc92df6
--- /dev/null
+++ b/src/InputCommand/ArgStrategy.java
@@ -0,0 +1,6 @@
+package InputCommand;
+
+public interface ArgStrategy {
+ public boolean matchArg(String arg);
+ public void execCmd (String arg);
+}
diff --git a/src/InputCommand/UseSetCurrentDb.java b/src/InputCommand/UseSetCurrentDb.java
new file mode 100644
index 0000000..3f1e050
--- /dev/null
+++ b/src/InputCommand/UseSetCurrentDb.java
@@ -0,0 +1,8 @@
+package InputCommand;
+
+import minidb.xmlParser.CurrentDBObserver;
+import minidb.xmlParser.DatabaseFile;
+
+public interface UseSetCurrentDb {
+ public void setCurrentDb(String path);
+}
diff --git a/src/InputCommand/addArg.java b/src/InputCommand/addArg.java
new file mode 100644
index 0000000..ad3ca5c
--- /dev/null
+++ b/src/InputCommand/addArg.java
@@ -0,0 +1,29 @@
+package InputCommand;
+
+import constants.errors;
+import minidb.xmlParser.DatabaseFile;
+
+public class addArg implements ArgStrategy, UseSetCurrentDb {
+ private DatabaseFile CurrentDb;
+
+ @Override
+ public void setCurrentDb(String path){
+ this.CurrentDb = new DatabaseFile(path);
+ }
+
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("add");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ if (CurrentDb != null) {
+ CurrentDb.addData(cmdArgs[1]);
+ } else {
+ System.out.println(errors.NO_DATABASE_SELECTED);
+ }
+ }
+}
diff --git a/src/InputCommand/deleteArg.java b/src/InputCommand/deleteArg.java
new file mode 100644
index 0000000..aa58c15
--- /dev/null
+++ b/src/InputCommand/deleteArg.java
@@ -0,0 +1,29 @@
+package InputCommand;
+
+import constants.errors;
+import minidb.xmlParser.DatabaseFile;
+
+public class deleteArg implements ArgStrategy, UseSetCurrentDb {
+ private DatabaseFile CurrentDb;
+
+ @Override
+ public void setCurrentDb(String path){
+ this.CurrentDb = new DatabaseFile(path);
+ }
+
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("delete");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ if (CurrentDb != null) {
+ CurrentDb.deleteData(cmdArgs[1]);
+ } else {
+ System.out.println(errors.NO_DATABASE_SELECTED);
+ }
+ }
+}
diff --git a/src/InputCommand/dropArg.java b/src/InputCommand/dropArg.java
new file mode 100644
index 0000000..645af79
--- /dev/null
+++ b/src/InputCommand/dropArg.java
@@ -0,0 +1,18 @@
+package InputCommand;
+
+import minidb.xmlParser.RegistryFile;
+
+public class dropArg implements ArgStrategy{
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("drop");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ RegistryFile registry = RegistryFile.getInstance();
+ registry.deleteDatabase(cmdArgs[1]);
+ }
+}
diff --git a/src/InputCommand/helpArg.java b/src/InputCommand/helpArg.java
new file mode 100644
index 0000000..a6d5f55
--- /dev/null
+++ b/src/InputCommand/helpArg.java
@@ -0,0 +1,16 @@
+package InputCommand;
+
+import constants.constants;
+
+public class helpArg implements ArgStrategy{
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("help;");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ System.out.println(constants.HELP_COMMANDS);
+ }
+}
diff --git a/src/InputCommand/listArg.java b/src/InputCommand/listArg.java
new file mode 100644
index 0000000..2f13abb
--- /dev/null
+++ b/src/InputCommand/listArg.java
@@ -0,0 +1,17 @@
+package InputCommand;
+
+import minidb.xmlParser.RegistryFile;
+
+public class listArg implements ArgStrategy{
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("list");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ RegistryFile registry = RegistryFile.getInstance();
+ registry.listAllDatabases();
+ }
+}
diff --git a/src/InputCommand/newArg.java b/src/InputCommand/newArg.java
new file mode 100644
index 0000000..99ed48f
--- /dev/null
+++ b/src/InputCommand/newArg.java
@@ -0,0 +1,18 @@
+package InputCommand;
+
+import minidb.xmlParser.RegistryFile;
+
+public class newArg implements ArgStrategy{
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("new");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ RegistryFile registry = RegistryFile.getInstance();
+ registry.createNewDatabase(cmdArgs[1]);
+ }
+}
diff --git a/src/InputCommand/notFoundArg.java b/src/InputCommand/notFoundArg.java
new file mode 100644
index 0000000..1eb7e84
--- /dev/null
+++ b/src/InputCommand/notFoundArg.java
@@ -0,0 +1,14 @@
+package InputCommand;
+
+public class notFoundArg implements ArgStrategy{
+ @Override
+ public boolean matchArg(String arg) {
+ return false;
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ System.out.println("UNKNOWN COMMAND: " + cmdArgs[0] + "\nType `help;` for commands list");
+ }
+}
diff --git a/src/InputCommand/readArg.java b/src/InputCommand/readArg.java
new file mode 100644
index 0000000..7cef79e
--- /dev/null
+++ b/src/InputCommand/readArg.java
@@ -0,0 +1,33 @@
+package InputCommand;
+
+import constants.errors;
+import minidb.xmlParser.DatabaseFile;
+
+public class readArg implements ArgStrategy, UseSetCurrentDb {
+ private DatabaseFile CurrentDb;
+
+ @Override
+ public void setCurrentDb(String path){
+ this.CurrentDb = new DatabaseFile(path);
+ }
+
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("read");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ if (CurrentDb != null) {
+ if (cmdArgs.length == 1) {
+ CurrentDb.readData();
+ } else {
+ CurrentDb.readData(cmdArgs[1]);
+ }
+ } else {
+ System.out.println(errors.NO_DATABASE_SELECTED);
+ }
+ }
+}
diff --git a/src/InputCommand/schemaArg.java b/src/InputCommand/schemaArg.java
new file mode 100644
index 0000000..5fa66d0
--- /dev/null
+++ b/src/InputCommand/schemaArg.java
@@ -0,0 +1,41 @@
+package InputCommand;
+
+import constants.errors;
+import minidb.xmlParser.DatabaseFile;
+
+public class schemaArg implements ArgStrategy, UseSetCurrentDb {
+ private DatabaseFile CurrentDb;
+
+ @Override
+ public void setCurrentDb(String path){
+ this.CurrentDb = new DatabaseFile(path);
+ }
+
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("schema");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ if (CurrentDb != null) {
+ String xy = cmdArgs[1];
+
+ if (xy.equals("show")) {
+ System.out.println(CurrentDb.getSchema());
+ } else {
+ String[] schemaVals = xy.split(",");
+ if (schemaVals.length > 1) {
+ CurrentDb.createSchema(xy);
+ } else {
+ System.out.println("There should be at least 2 columns of data");
+ }
+ }
+
+ } else {
+ System.out.println(errors.NO_DATABASE_SELECTED);
+ }
+ }
+}
diff --git a/src/InputCommand/useArg.java b/src/InputCommand/useArg.java
new file mode 100644
index 0000000..504457a
--- /dev/null
+++ b/src/InputCommand/useArg.java
@@ -0,0 +1,42 @@
+package InputCommand;
+
+import minidb.xmlParser.CurrentDBObserver;
+import minidb.xmlParser.DatabaseFile;
+import minidb.xmlParser.RegistryFile;
+
+public class useArg implements ArgStrategy, UseSetCurrentDb{
+ private DatabaseFile CurrentDb;
+ private CurrentDBObserver currentDBO;
+
+ public void setCurrentDBO(CurrentDBObserver currentDBO) {
+ this.currentDBO = currentDBO;
+ }
+
+ @Override
+ public void setCurrentDb(String path) {
+ this.CurrentDb = new DatabaseFile(path);
+ }
+
+ @Override
+ public boolean matchArg(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ return cmdArgs[0].equals("use");
+ }
+
+ @Override
+ public void execCmd(String arg) {
+ String[] cmdArgs = arg.split(" ");
+ RegistryFile registry = RegistryFile.getInstance();
+ String path = registry.getDatabasePath(cmdArgs[1], false);
+
+ if (path != null) {
+ CurrentDb = new DatabaseFile(path);
+ currentDBO.updateAll(path);
+ CurrentDb.EditMode();
+ System.out.println(path);
+ System.out.println("Successfully loaded Database named: " + cmdArgs[0]);
+ } else {
+ System.out.println("Database not found");
+ }
+ }
+}
diff --git a/src/MainClass.java b/src/MainClass.java
new file mode 100644
index 0000000..8f581a7
--- /dev/null
+++ b/src/MainClass.java
@@ -0,0 +1,8 @@
+public class MainClass {
+ public static void main(String[] args) {
+// System.out.println("my smell");
+ CliBuilder cb = new CliBuilder();
+ cli db_cli = cb.buildCli();
+ db_cli.run();
+ }
+}
diff --git a/src/MiniDB-design-pattern.iml b/src/MiniDB-design-pattern.iml
new file mode 100644
index 0000000..b107a2d
--- /dev/null
+++ b/src/MiniDB-design-pattern.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cli.java b/src/cli.java
index d99e647..d5cfc77 100644
--- a/src/cli.java
+++ b/src/cli.java
@@ -1,54 +1,41 @@
+import java.util.ArrayList;
import java.util.Scanner;
+
+import InputCommand.ArgStrategy;
+import InputCommand.notFoundArg;
import minidb.xmlParser.DatabaseFile;
import minidb.xmlParser.RegistryFile;
import constants.*;
-/*
-To do
-- Comment the code
-- Table Layout for the data.
-- usage of threads
-*/
-
-/**
- * Javadoc comments. All are static methods because we are not creating any
- * object of this class.
- *
- * @author Chanakya
- */
public class cli {
+ private ArrayList argsList;
+
+ RegistryFile registry = RegistryFile.getInstance();
+ DatabaseFile CurrentDb;
+
+ public cli() {
+ }
- /**
- * The Registry File is a XML file which contains the information about the all
- * the databases created. It acts as a pointer to the Database File. So, We
- * instantly load the registry file.
- */
- static RegistryFile registry;
-
- /**
- * This attribute is for storing the DatabaseFile instance. Which is assigned
- * when the user calls the command "use". if the user does not call the command
- * "use" then the We show a error message.
- */
- static DatabaseFile CurrentDb;
-
- public static void main(String[] args) {
+ public void setArgsList(ArrayList argsList) {
+ this.argsList = argsList;
+ }
+
+ public void run() {
print(constants.HEADING);
- registry = new RegistryFile(constants.DATA_XML_PATH);
Scanner input = new Scanner(System.in);
while (true) {
System.out.print(constants.CMD_PREFIX);
- String currentCmd = input.nextLine();
+ String currentCmdCommand = input.nextLine();
- // break if user wants to exit
- if (currentCmd.equals("exit;")) {
+ if (currentCmdCommand.equals("exit;")) {
break;
}
long startTime = System.nanoTime();
- cliInputs(currentCmd);
+ executeCliInputs(currentCmdCommand);
+// executeCliInputs1(currentCmdCommand);
long endTime = System.nanoTime();
long exeTime = (endTime - startTime) / 1000000;
@@ -58,116 +45,157 @@ public static void main(String[] args) {
input.close();
}
- private static void cliInputs(String input) {
+ private void executeCliInputs1 (String cmdInp) {
+ ArgStrategy responseStrat = new notFoundArg();
+
+ for(ArgStrategy arg: argsList) {
+ if(arg.matchArg(cmdInp)){
+ responseStrat = arg;
+ break;
+ }
+ }
+
+ responseStrat.execCmd(cmdInp);
+ }
+
+ private void executeCliInputs(String input) {
String[] cmdArgs = input.split(" ");
switch (cmdArgs[0]) {
case "new": {
- registry.createNewDatabase(cmdArgs[1]);
+ createNewDatabase(cmdArgs[1]);
break;
}
case "use": {
- String path = registry.getDatabasePath(cmdArgs[1], false);
-
- if (path != null) {
- CurrentDb = new DatabaseFile(path);
- CurrentDb.EditMode();
- print("Successfully loaded Database named: " + cmdArgs[1]);
- } else {
- print("Database not found");
- }
+ useDatabase(cmdArgs[1]);
break;
}
case "list": {
- registry.listAllDatabases();
+ listAllDatabase();
break;
}
case "help;": {
- print(constants.HELP_COMMANDS);
+ showHelp();
break;
}
- case "info": {
- // For querying the meta info of the database
- // TODO
- }
-
case "schema": {
- if (CurrentDb != null) {
- String xy = cmdArgs[1];
-
- if (xy.equals("show")) {
- print(CurrentDb.getSchema());
- } else {
- String[] schemaVals = xy.split(",");
- if (schemaVals.length > 1) {
- CurrentDb.createSchema(xy);
- } else {
- print("There should be atleast 2 columns of data");
- }
- }
-
- } else {
- print(errors.NO_DATABASE_SELECTED);
- }
+ schemaCommand(cmdArgs[1]);
break;
}
case "add": {
- if (CurrentDb != null) {
- CurrentDb.addData(cmdArgs[1]);
- } else {
- print(errors.NO_DATABASE_SELECTED);
- }
-
+ addRecordToDB(cmdArgs[1]);
break;
}
case "read": {
- if (CurrentDb != null) {
- if (cmdArgs.length == 1) {
- CurrentDb.readData();
- } else {
- CurrentDb.readData(cmdArgs[1]);
- }
- } else {
- print(errors.NO_DATABASE_SELECTED);
- }
+ readFromDB(input);
break;
}
case "drop": {
- registry.deleteDatabase(cmdArgs[1]);
- break;
- }
-
- case "update": {
- // TODO
- if (CurrentDb != null) {
- }
+ dropTable(cmdArgs[1]);
break;
}
case "delete": {
- if (CurrentDb != null) {
- CurrentDb.deleteData(cmdArgs[1]);
- } else {
- print(errors.NO_DATABASE_SELECTED);
- }
+ deleteFromDB(cmdArgs[1]);
break;
}
default: {
- print("UNKNOWN COMMAND: " + cmdArgs[0] + "\nType `help;` for commands list");
+ unknownCommandMsg(cmdArgs[0]);
break;
}
}
}
+ private void deleteFromDB(String cmdArgs) {
+ if (CurrentDb != null) {
+ CurrentDb.deleteData(cmdArgs);
+ } else {
+ print(errors.NO_DATABASE_SELECTED);
+ }
+ }
+
+ private void dropTable(String cmdArgs) {
+ registry.deleteDatabase(cmdArgs);
+ }
+
+ private void readFromDB(String inpArgs) {
+ String[] cmdArgs = inpArgs.split(" ");
+ if (CurrentDb != null) {
+ if (cmdArgs.length == 1) {
+ CurrentDb.readData();
+ } else {
+ CurrentDb.readData(cmdArgs[1]);
+ }
+ } else {
+ print(errors.NO_DATABASE_SELECTED);
+ }
+ }
+
+ private void addRecordToDB(String cmdArgs) {
+ if (CurrentDb != null) {
+ CurrentDb.addData(cmdArgs);
+ } else {
+ print(errors.NO_DATABASE_SELECTED);
+ }
+ }
+
+ private void schemaCommand(String cmdArgs) {
+ if (CurrentDb != null) {
+ String xy = cmdArgs;
+
+ if (xy.equals("show")) {
+ print(CurrentDb.getSchema());
+ } else {
+ String[] schemaVals = xy.split(",");
+ if (schemaVals.length > 1) {
+ CurrentDb.createSchema(xy);
+ } else {
+ print("There should be at least 2 columns of data");
+ }
+ }
+
+ } else {
+ print(errors.NO_DATABASE_SELECTED);
+ }
+ }
+
+ private void unknownCommandMsg(String cmdArgs) {
+ print("UNKNOWN COMMAND: " + cmdArgs + "\nType `help;` for commands list");
+ }
+
+ private void showHelp() {
+ print(constants.HELP_COMMANDS);
+ }
+
+ private void listAllDatabase() {
+ registry.listAllDatabases();
+ }
+
+ private void useDatabase(String name) {
+ String path = registry.getDatabasePath(name, false);
+
+ if (path != null) {
+ CurrentDb = new DatabaseFile(path);
+ CurrentDb.EditMode();
+ print("Successfully loaded Database named: " + name);
+ } else {
+ print("Database not found");
+ }
+ }
+
+ private void createNewDatabase(String name) {
+ registry.createNewDatabase(name);
+ }
+
private static void print(String x) {
System.out.println(x);
}
diff --git a/src/constants/constants.java b/src/constants/constants.java
index 28e2017..8cc48be 100644
--- a/src/constants/constants.java
+++ b/src/constants/constants.java
@@ -4,6 +4,10 @@
* A Global store for all the constants used in the application.
* In future, we can let the user a create configuration file to modify the constants.
*/
+
+/**
+ * constants can be a singleton
+ */
public class constants {
public static String VERSION = "v0.3.1";
diff --git a/src/minidb/xmlParser/CurrentDBObserver.java b/src/minidb/xmlParser/CurrentDBObserver.java
new file mode 100644
index 0000000..a9f0210
--- /dev/null
+++ b/src/minidb/xmlParser/CurrentDBObserver.java
@@ -0,0 +1,19 @@
+package minidb.xmlParser;
+
+import InputCommand.UseSetCurrentDb;
+
+import java.util.ArrayList;
+
+public class CurrentDBObserver {
+ private final ArrayList strategyArrayList;
+
+ public CurrentDBObserver(ArrayList strategyArrayList) {
+ this.strategyArrayList = strategyArrayList;
+ }
+
+ public void updateAll(String path) {
+ for (UseSetCurrentDb argStart: strategyArrayList) {
+ argStart.setCurrentDb(path);
+ }
+ }
+}
diff --git a/src/minidb/xmlParser/DatabaseFile.java b/src/minidb/xmlParser/DatabaseFile.java
index a577eed..949e865 100644
--- a/src/minidb/xmlParser/DatabaseFile.java
+++ b/src/minidb/xmlParser/DatabaseFile.java
@@ -8,9 +8,9 @@
*/
public class DatabaseFile extends XMLFiles {
// prefix `X` to avoid namespace conflict
- private static String TAG_STORAGE = "Xstorage";
- private static String TAG_META = "Xmeta"; // incomplete feature
- private static String TAG_DATA = "Xdata";
+ private static final String TAG_STORAGE = "Xstorage";
+ private static final String TAG_META = "Xmeta"; // incomplete feature
+ private static final String TAG_DATA = "Xdata";
private Element metaElem;
private Element storageElem;
diff --git a/src/minidb/xmlParser/RegistryFile.java b/src/minidb/xmlParser/RegistryFile.java
index a44a4c8..0037b4b 100644
--- a/src/minidb/xmlParser/RegistryFile.java
+++ b/src/minidb/xmlParser/RegistryFile.java
@@ -8,16 +8,21 @@
import org.w3c.dom.*;
import constants.constants;
-/**
- * Contains the methods for performing CRUD operations on the registry file
- * 'minidb.xml'
- */
public class RegistryFile extends XMLFiles {
- public RegistryFile(String path) {
+ private static RegistryFile registryFile;
+
+ private RegistryFile(String path) {
super(path);
}
+ public static RegistryFile getInstance()
+ {
+ if (registryFile == null)
+ registryFile = new RegistryFile(constants.DATA_XML_PATH);
+ return registryFile;
+ }
+
void createFile() {
Element rootElem = doc.createElement("root");
Element emptyDb = this.addDbEntry("empty", "true");
@@ -31,13 +36,6 @@ void createFile() {
System.out.println("Intialized: " + xmlFile.getPath());
}
- /**
- *
- * @param name - Name of the database
- * @param disabled - Always false for user created databases
- * @return The XML Element which can be appended into the doc
- * @throws ParserConfigurationException
- */
private Element addDbEntry(String name, String disabled) {
Document doc = this.doc;
@@ -65,12 +63,6 @@ private Element addDbEntry(String name, String disabled) {
return databaseElem;
}
- /**
- * Method for creating a new database. Which means both creating a entry in the
- * minidb.xml and A new database-xml file.
- *
- * @param name - The name of the database
- */
public void createNewDatabase(String name) {
try {
if (!this.isDatabaseExists(name)) {
@@ -89,9 +81,6 @@ public void createNewDatabase(String name) {
}
}
- /**
- * To list all the created databases in the register
- */
public void listAllDatabases() {
NodeList list = this.doc.getElementsByTagName("name");
@@ -102,12 +91,6 @@ public void listAllDatabases() {
}
}
- /**
- * Checks if the database name already exists in the register
- *
- * @param name - The name of the database
- * @return The index of the database in the register, if not found returns -1
- */
public int checkDatabase(String name) {
int x = -1;
NodeList list = this.doc.getElementsByTagName("name");
diff --git a/src/minidb/xmlParser/XMLFiles.java b/src/minidb/xmlParser/XMLFiles.java
index b31faff..ef5f0df 100644
--- a/src/minidb/xmlParser/XMLFiles.java
+++ b/src/minidb/xmlParser/XMLFiles.java
@@ -31,6 +31,9 @@ public XMLFiles(String path) {
}
}
+ /**
+ * already used factory pattern
+ */
private void load(boolean NoFile) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
@@ -39,7 +42,6 @@ private void load(boolean NoFile) throws ParserConfigurationException, SAXExcept
createFile(); // abstract method to create the file
} else {
doc = docBuilder.parse(xmlFile);
- ;
}
}
@@ -47,6 +49,7 @@ private void load(boolean NoFile) throws ParserConfigurationException, SAXExcept
/**
* Call this method to update the XML file.
+ * also used abstract factory
*/
protected void updateFile() {
try {
diff --git a/src/out/production/MiniDB-design-pattern/.idea/.gitignore b/src/out/production/MiniDB-design-pattern/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/src/out/production/MiniDB-design-pattern/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/src/out/production/MiniDB-design-pattern/.idea/misc.xml b/src/out/production/MiniDB-design-pattern/.idea/misc.xml
new file mode 100644
index 0000000..09e91bf
--- /dev/null
+++ b/src/out/production/MiniDB-design-pattern/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/out/production/MiniDB-design-pattern/.idea/modules.xml b/src/out/production/MiniDB-design-pattern/.idea/modules.xml
new file mode 100644
index 0000000..e083187
--- /dev/null
+++ b/src/out/production/MiniDB-design-pattern/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/out/production/MiniDB-design-pattern/.idea/vcs.xml b/src/out/production/MiniDB-design-pattern/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/src/out/production/MiniDB-design-pattern/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/out/production/MiniDB-design-pattern/MiniDB-design-pattern.iml b/src/out/production/MiniDB-design-pattern/MiniDB-design-pattern.iml
new file mode 100644
index 0000000..b107a2d
--- /dev/null
+++ b/src/out/production/MiniDB-design-pattern/MiniDB-design-pattern.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file