Repository files navigation

File to DB Parser

File To DB Parser is a multi-thread program that reads data from a reaction file and writes the data into Database. The reaction file is a key : value paired data. Key is separated from value with " - ", the File has comment line that starts with "#". Data is separated by "//", the snippet below shows a sample of the file.

	# Authors:
# Pallavi Subhraveti
# Quang Ong
# Ingrid Keseler
# Anamika Kothari
# Tim Holland
UNIQUE-ID - ALKAPHOSPHA-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
LEFT - WATER
ORPHAN? - :NO
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - |Alcohols|
RIGHT - |Pi|
//
UNIQUE-ID - 6-PHOSPHO-BETA-GALACTOSIDASE-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 16 11 10 12 13 14 15 17 9) (((CPD-1241 0 15)
LEFT - WATER
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - CPD-1241
RIGHT - |Alcohols|
//

##checkpoint.andela.Model

###FileDelimeters Class

####Reading a different Type of File

This project was designed with reactions.dat file structure in mind. A client can read in another key value pair file, client will have to change the FileDelimeters enum class in checkpoint.andela.model package by replacing the KEY_VALUE_SEPARATOR, COMMENT and END_OF_DATA parameter.

KEY_VALUE_SEPARATOR(" - "),
COMMENT("#"),
END_OF_DATA("//");

###DatabaseConfig.java

Client using this project has to create a MYSQL database and change the configuration settings in this file

DATABASE_USER_NAME("root"),
DATABASE_PASSWORD("password"),
DATABASE_NAME ("reactiondb"),
TABLE_NAME("reactions");
DATABASE_TYPE("jdbc:mysql://localhost:3306/");

###InputFieldModel

Client will specify the keys he/she wants to read from the file and save to database.

unique_id("UNIQUE-ID"),
common_name("COMMON-NAME"),
atom_mappings("ATOM-MAPPINGS"),
credits("CREDITS"),
ec_number("EC-NUMBER"),
enzymatic_reaction("ENZYMATIC-REACTION"),
in_pathway("IN-PATHWAY"),
orphan("ORPHAN?"),
physiologically_relevant("PHYSIOLOGICALLY-RELEVANT?"),
reation_direction("REACTION-DIRECTION");

##checkpoint.andela.main

Class MainApp

Class MainApp is the gateway into the Application. A Client will have to pass the path to the reaction file into the class.

MainApp Constructor

  • public MainApp(String filePath)

MainApp Method

To start the Application, clients have to call the method runApplication. The Method implements the classes DBWriter, FileParser and LogWriter Class as Threads.

  • public void runApplication()

Implementation

MainAppmainApp = newMainApp("/Users/Spykins/IdeaProjects/FileToDBParser/res/reactions.dat");
mainApp.runApplication();

##checkpoint.andela.parser

File Parser Class

FileParser class implements Runnable. The FileParser Constructor takes in the File Path and it has a private variable readData of type ReadData.

FileParser Constructor

public FileParser(String filePath)

FileParser Methods

  • public void run()
  • private void initializeFileParser()

The run method is called when the Thread Starts, the run method calls initializeFileParser() which adds item into the buffer.

ReadData Class

The ReadData class reads in Data from the file, it takes the File Path in the constructor. It has a public method getData() which reads the file line by line, it stops when it gets to the end of data. It returns a HashMap of the Key and Value in the data and returns null when it gets to end of file.

FileParser Constructor

  • public ReadData(String pathToFile)

FileParser Method

  • public HashMap<String,String> getData()

checkpoint.andela.db

###DBWriter Class

DBWriter implements Runnable, it takes Data from the Buffer and writes it into the database.

DBWriter Constructor

  • public DBWriter()

DBWriter Methods

  • public void insertIntoDatabase (HashMap<String, String> dataToInsertInDatabase )
  • public void run()

insertIntoDatabase() takes data from the data Buffer and stores into database. The run method is called when the thread starts, The run method calls insertIntoDatabase method which removes the data stored into the Data buffer and writes it into database.

QueryDatabase Class

QueryDatabase is the class that queries the Database. The QueryDatabase constructor takes in Connection object as a parameter.

QueryDatabase Constructor

  • public QueryDatabase(Connection databaseConnection)

QueryDatabase Method

  • public boolean createTable(String tableName)
  • public boolean insertIntoDatabase(String tableName, HashMap<String, String> dataToInsertInDatabase)
  • public boolean deleteTableFromDatabase(String tableName)
  • public boolean hasTable(String tableName)

The createTable method creates table in the database if the table doesn't exist, the insertIntoDatabase method takes the table name,HashMap of the data and insert it into the database.

ConnectiondatabaseConnection = DriverManager.getConnection(DatabaseConfig.DATABASE_TYPE.getRealName() +
DatabaseConfig.DATABASE_NAME.getGetRealName(),
DatabaseConfig.DATABASE_USER_NAME.getGetRealName(), DatabaseConfig.DATABASE_PASSWORD.getGetRealName());
QueryDatabasequeryDatabase = newQueryDatabase(databaseConnection);

checkpoint.andela.log

LogWriter Class

LogWriter class writes the activity of the DBWriter and FileParser thread into an output text file. LogWriter implements Runnable.

LogWriter Constructor

  • public LogWriter(String filePath)

LogWriter Method

  • public void writeToLogger(String logString)
  • public void run()

checkpoint.andela.buffer

DataAndLogBuffer Class

DataAndLogBuffer class is a Singleton class that keeps track of the data buffer and log buffer.

DataAndLogBuffer Constructor

  • private DataAndLogBuffer()

DataAndLogBuffer Methods

  • public static synchronized DataAndLogBuffer getInstance()
  • public void addItemToDataBuffer(HashMap<String, String> itemToAddToBuffer)
  • public HashMap<String, String> removeItemFromDataBuffer()
  • public void addItemToLogBuffer(String logToAdd)
  • public String removeItemFromLogBuffer()
  • public ArrayBlockingQueue<String> getBufferUsedToStoreLogInfo()
  • public ArrayBlockingQueue<HashMap<String, String>> getBufferUsedToStoreData()
  • public boolean hasDataToRead()
  • public void setDataAvailable(boolean flag)

UML Diagram

fileparser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

File to DB Parser

File To DB Parser is a multi-thread program that reads data from a reaction file and writes the data into Database. The reaction file is a key : value paired data. Key is separated from value with " - ", the File has comment line that starts with "#". Data is separated by "//", the snippet below shows a sample of the file.

	# Authors:
# Pallavi Subhraveti
# Quang Ong
# Ingrid Keseler
# Anamika Kothari
# Tim Holland
UNIQUE-ID - ALKAPHOSPHA-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
LEFT - WATER
ORPHAN? - :NO
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - |Alcohols|
RIGHT - |Pi|
//
UNIQUE-ID - 6-PHOSPHO-BETA-GALACTOSIDASE-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 16 11 10 12 13 14 15 17 9) (((CPD-1241 0 15)
LEFT - WATER
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - CPD-1241
RIGHT - |Alcohols|
//

##checkpoint.andela.Model

###FileDelimeters Class

####Reading a different Type of File

This project was designed with reactions.dat file structure in mind. A client can read in another key value pair file, client will have to change the FileDelimeters enum class in checkpoint.andela.model package by replacing the KEY_VALUE_SEPARATOR, COMMENT and END_OF_DATA parameter.

KEY_VALUE_SEPARATOR(" - "),
COMMENT("#"),
END_OF_DATA("//");

###DatabaseConfig.java

Client using this project has to create a MYSQL database and change the configuration settings in this file

DATABASE_USER_NAME("root"),
DATABASE_PASSWORD("password"),
DATABASE_NAME ("reactiondb"),
TABLE_NAME("reactions");
DATABASE_TYPE("jdbc:mysql://localhost:3306/");

###InputFieldModel

Client will specify the keys he/she wants to read from the file and save to database.

unique_id("UNIQUE-ID"),
common_name("COMMON-NAME"),
atom_mappings("ATOM-MAPPINGS"),
credits("CREDITS"),
ec_number("EC-NUMBER"),
enzymatic_reaction("ENZYMATIC-REACTION"),
in_pathway("IN-PATHWAY"),
orphan("ORPHAN?"),
physiologically_relevant("PHYSIOLOGICALLY-RELEVANT?"),
reation_direction("REACTION-DIRECTION");

##checkpoint.andela.main

Class MainApp

Class MainApp is the gateway into the Application. A Client will have to pass the path to the reaction file into the class.

MainApp Constructor

  • public MainApp(String filePath)

MainApp Method

To start the Application, clients have to call the method runApplication. The Method implements the classes DBWriter, FileParser and LogWriter Class as Threads.

  • public void runApplication()

Implementation

MainAppmainApp = newMainApp("/Users/Spykins/IdeaProjects/FileToDBParser/res/reactions.dat");
mainApp.runApplication();

##checkpoint.andela.parser

File Parser Class

FileParser class implements Runnable. The FileParser Constructor takes in the File Path and it has a private variable readData of type ReadData.

FileParser Constructor

public FileParser(String filePath)

FileParser Methods

  • public void run()
  • private void initializeFileParser()

The run method is called when the Thread Starts, the run method calls initializeFileParser() which adds item into the buffer.

ReadData Class

The ReadData class reads in Data from the file, it takes the File Path in the constructor. It has a public method getData() which reads the file line by line, it stops when it gets to the end of data. It returns a HashMap of the Key and Value in the data and returns null when it gets to end of file.

FileParser Constructor

  • public ReadData(String pathToFile)

FileParser Method

  • public HashMap<String,String> getData()

checkpoint.andela.db

###DBWriter Class

DBWriter implements Runnable, it takes Data from the Buffer and writes it into the database.

DBWriter Constructor

  • public DBWriter()

DBWriter Methods

  • public void insertIntoDatabase (HashMap<String, String> dataToInsertInDatabase )
  • public void run()

insertIntoDatabase() takes data from the data Buffer and stores into database. The run method is called when the thread starts, The run method calls insertIntoDatabase method which removes the data stored into the Data buffer and writes it into database.

QueryDatabase Class

QueryDatabase is the class that queries the Database. The QueryDatabase constructor takes in Connection object as a parameter.

QueryDatabase Constructor

  • public QueryDatabase(Connection databaseConnection)

QueryDatabase Method

  • public boolean createTable(String tableName)
  • public boolean insertIntoDatabase(String tableName, HashMap<String, String> dataToInsertInDatabase)
  • public boolean deleteTableFromDatabase(String tableName)
  • public boolean hasTable(String tableName)

The createTable method creates table in the database if the table doesn't exist, the insertIntoDatabase method takes the table name,HashMap of the data and insert it into the database.

ConnectiondatabaseConnection = DriverManager.getConnection(DatabaseConfig.DATABASE_TYPE.getRealName() +
DatabaseConfig.DATABASE_NAME.getGetRealName(),
DatabaseConfig.DATABASE_USER_NAME.getGetRealName(), DatabaseConfig.DATABASE_PASSWORD.getGetRealName());
QueryDatabasequeryDatabase = newQueryDatabase(databaseConnection);

checkpoint.andela.log

LogWriter Class

LogWriter class writes the activity of the DBWriter and FileParser thread into an output text file. LogWriter implements Runnable.

LogWriter Constructor

  • public LogWriter(String filePath)

LogWriter Method

  • public void writeToLogger(String logString)
  • public void run()

checkpoint.andela.buffer

DataAndLogBuffer Class

DataAndLogBuffer class is a Singleton class that keeps track of the data buffer and log buffer.

DataAndLogBuffer Constructor

  • private DataAndLogBuffer()

DataAndLogBuffer Methods

  • public static synchronized DataAndLogBuffer getInstance()
  • public void addItemToDataBuffer(HashMap<String, String> itemToAddToBuffer)
  • public HashMap<String, String> removeItemFromDataBuffer()
  • public void addItemToLogBuffer(String logToAdd)
  • public String removeItemFromLogBuffer()
  • public ArrayBlockingQueue<String> getBufferUsedToStoreLogInfo()
  • public ArrayBlockingQueue<HashMap<String, String>> getBufferUsedToStoreData()
  • public boolean hasDataToRead()
  • public void setDataAvailable(boolean flag)

UML Diagram

fileparser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

File to DB Parser

File To DB Parser is a multi-thread program that reads data from a reaction file and writes the data into Database. The reaction file is a key : value paired data. Key is separated from value with " - ", the File has comment line that starts with "#". Data is separated by "//", the snippet below shows a sample of the file.

	# Authors:
# Pallavi Subhraveti
# Quang Ong
# Ingrid Keseler
# Anamika Kothari
# Tim Holland
UNIQUE-ID - ALKAPHOSPHA-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
LEFT - WATER
ORPHAN? - :NO
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - |Alcohols|
RIGHT - |Pi|
//
UNIQUE-ID - 6-PHOSPHO-BETA-GALACTOSIDASE-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 16 11 10 12 13 14 15 17 9) (((CPD-1241 0 15)
LEFT - WATER
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - CPD-1241
RIGHT - |Alcohols|
//

##checkpoint.andela.Model

###FileDelimeters Class

####Reading a different Type of File

This project was designed with reactions.dat file structure in mind. A client can read in another key value pair file, client will have to change the FileDelimeters enum class in checkpoint.andela.model package by replacing the KEY_VALUE_SEPARATOR, COMMENT and END_OF_DATA parameter.

KEY_VALUE_SEPARATOR(" - "),
COMMENT("#"),
END_OF_DATA("//");

###DatabaseConfig.java

Client using this project has to create a MYSQL database and change the configuration settings in this file

DATABASE_USER_NAME("root"),
DATABASE_PASSWORD("password"),
DATABASE_NAME ("reactiondb"),
TABLE_NAME("reactions");
DATABASE_TYPE("jdbc:mysql://localhost:3306/");

###InputFieldModel

Client will specify the keys he/she wants to read from the file and save to database.

unique_id("UNIQUE-ID"),
common_name("COMMON-NAME"),
atom_mappings("ATOM-MAPPINGS"),
credits("CREDITS"),
ec_number("EC-NUMBER"),
enzymatic_reaction("ENZYMATIC-REACTION"),
in_pathway("IN-PATHWAY"),
orphan("ORPHAN?"),
physiologically_relevant("PHYSIOLOGICALLY-RELEVANT?"),
reation_direction("REACTION-DIRECTION");

##checkpoint.andela.main

Class MainApp

Class MainApp is the gateway into the Application. A Client will have to pass the path to the reaction file into the class.

MainApp Constructor

  • public MainApp(String filePath)

MainApp Method

To start the Application, clients have to call the method runApplication. The Method implements the classes DBWriter, FileParser and LogWriter Class as Threads.

  • public void runApplication()

Implementation

MainAppmainApp = newMainApp("/Users/Spykins/IdeaProjects/FileToDBParser/res/reactions.dat");
mainApp.runApplication();

##checkpoint.andela.parser

File Parser Class

FileParser class implements Runnable. The FileParser Constructor takes in the File Path and it has a private variable readData of type ReadData.

FileParser Constructor

public FileParser(String filePath)

FileParser Methods

  • public void run()
  • private void initializeFileParser()

The run method is called when the Thread Starts, the run method calls initializeFileParser() which adds item into the buffer.

ReadData Class

The ReadData class reads in Data from the file, it takes the File Path in the constructor. It has a public method getData() which reads the file line by line, it stops when it gets to the end of data. It returns a HashMap of the Key and Value in the data and returns null when it gets to end of file.

FileParser Constructor

  • public ReadData(String pathToFile)

FileParser Method

  • public HashMap<String,String> getData()

checkpoint.andela.db

###DBWriter Class

DBWriter implements Runnable, it takes Data from the Buffer and writes it into the database.

DBWriter Constructor

  • public DBWriter()

DBWriter Methods

  • public void insertIntoDatabase (HashMap<String, String> dataToInsertInDatabase )
  • public void run()

insertIntoDatabase() takes data from the data Buffer and stores into database. The run method is called when the thread starts, The run method calls insertIntoDatabase method which removes the data stored into the Data buffer and writes it into database.

QueryDatabase Class

QueryDatabase is the class that queries the Database. The QueryDatabase constructor takes in Connection object as a parameter.

QueryDatabase Constructor

  • public QueryDatabase(Connection databaseConnection)

QueryDatabase Method

  • public boolean createTable(String tableName)
  • public boolean insertIntoDatabase(String tableName, HashMap<String, String> dataToInsertInDatabase)
  • public boolean deleteTableFromDatabase(String tableName)
  • public boolean hasTable(String tableName)

The createTable method creates table in the database if the table doesn't exist, the insertIntoDatabase method takes the table name,HashMap of the data and insert it into the database.

ConnectiondatabaseConnection = DriverManager.getConnection(DatabaseConfig.DATABASE_TYPE.getRealName() +
DatabaseConfig.DATABASE_NAME.getGetRealName(),
DatabaseConfig.DATABASE_USER_NAME.getGetRealName(), DatabaseConfig.DATABASE_PASSWORD.getGetRealName());
QueryDatabasequeryDatabase = newQueryDatabase(databaseConnection);

checkpoint.andela.log

LogWriter Class

LogWriter class writes the activity of the DBWriter and FileParser thread into an output text file. LogWriter implements Runnable.

LogWriter Constructor

  • public LogWriter(String filePath)

LogWriter Method

  • public void writeToLogger(String logString)
  • public void run()

checkpoint.andela.buffer

DataAndLogBuffer Class

DataAndLogBuffer class is a Singleton class that keeps track of the data buffer and log buffer.

DataAndLogBuffer Constructor

  • private DataAndLogBuffer()

DataAndLogBuffer Methods

  • public static synchronized DataAndLogBuffer getInstance()
  • public void addItemToDataBuffer(HashMap<String, String> itemToAddToBuffer)
  • public HashMap<String, String> removeItemFromDataBuffer()
  • public void addItemToLogBuffer(String logToAdd)
  • public String removeItemFromLogBuffer()
  • public ArrayBlockingQueue<String> getBufferUsedToStoreLogInfo()
  • public ArrayBlockingQueue<HashMap<String, String>> getBufferUsedToStoreData()
  • public boolean hasDataToRead()
  • public void setDataAvailable(boolean flag)

UML Diagram

fileparser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

File to DB Parser

File To DB Parser is a multi-thread program that reads data from a reaction file and writes the data into Database. The reaction file is a key : value paired data. Key is separated from value with " - ", the File has comment line that starts with "#". Data is separated by "//", the snippet below shows a sample of the file.

	# Authors:
# Pallavi Subhraveti
# Quang Ong
# Ingrid Keseler
# Anamika Kothari
# Tim Holland
UNIQUE-ID - ALKAPHOSPHA-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
LEFT - WATER
ORPHAN? - :NO
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - |Alcohols|
RIGHT - |Pi|
//
UNIQUE-ID - 6-PHOSPHO-BETA-GALACTOSIDASE-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 16 11 10 12 13 14 15 17 9) (((CPD-1241 0 15)
LEFT - WATER
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - CPD-1241
RIGHT - |Alcohols|
//

##checkpoint.andela.Model

###FileDelimeters Class

####Reading a different Type of File

This project was designed with reactions.dat file structure in mind. A client can read in another key value pair file, client will have to change the FileDelimeters enum class in checkpoint.andela.model package by replacing the KEY_VALUE_SEPARATOR, COMMENT and END_OF_DATA parameter.

KEY_VALUE_SEPARATOR(" - "),
COMMENT("#"),
END_OF_DATA("//");

###DatabaseConfig.java

Client using this project has to create a MYSQL database and change the configuration settings in this file

DATABASE_USER_NAME("root"),
DATABASE_PASSWORD("password"),
DATABASE_NAME ("reactiondb"),
TABLE_NAME("reactions");
DATABASE_TYPE("jdbc:mysql://localhost:3306/");

###InputFieldModel

Client will specify the keys he/she wants to read from the file and save to database.

unique_id("UNIQUE-ID"),
common_name("COMMON-NAME"),
atom_mappings("ATOM-MAPPINGS"),
credits("CREDITS"),
ec_number("EC-NUMBER"),
enzymatic_reaction("ENZYMATIC-REACTION"),
in_pathway("IN-PATHWAY"),
orphan("ORPHAN?"),
physiologically_relevant("PHYSIOLOGICALLY-RELEVANT?"),
reation_direction("REACTION-DIRECTION");

##checkpoint.andela.main

Class MainApp

Class MainApp is the gateway into the Application. A Client will have to pass the path to the reaction file into the class.

MainApp Constructor

  • public MainApp(String filePath)

MainApp Method

To start the Application, clients have to call the method runApplication. The Method implements the classes DBWriter, FileParser and LogWriter Class as Threads.

  • public void runApplication()

Implementation

MainAppmainApp = newMainApp("/Users/Spykins/IdeaProjects/FileToDBParser/res/reactions.dat");
mainApp.runApplication();

##checkpoint.andela.parser

File Parser Class

FileParser class implements Runnable. The FileParser Constructor takes in the File Path and it has a private variable readData of type ReadData.

FileParser Constructor

public FileParser(String filePath)

FileParser Methods

  • public void run()
  • private void initializeFileParser()

The run method is called when the Thread Starts, the run method calls initializeFileParser() which adds item into the buffer.

ReadData Class

The ReadData class reads in Data from the file, it takes the File Path in the constructor. It has a public method getData() which reads the file line by line, it stops when it gets to the end of data. It returns a HashMap of the Key and Value in the data and returns null when it gets to end of file.

FileParser Constructor

  • public ReadData(String pathToFile)

FileParser Method

  • public HashMap<String,String> getData()

checkpoint.andela.db

###DBWriter Class

DBWriter implements Runnable, it takes Data from the Buffer and writes it into the database.

DBWriter Constructor

  • public DBWriter()

DBWriter Methods

  • public void insertIntoDatabase (HashMap<String, String> dataToInsertInDatabase )
  • public void run()

insertIntoDatabase() takes data from the data Buffer and stores into database. The run method is called when the thread starts, The run method calls insertIntoDatabase method which removes the data stored into the Data buffer and writes it into database.

QueryDatabase Class

QueryDatabase is the class that queries the Database. The QueryDatabase constructor takes in Connection object as a parameter.

QueryDatabase Constructor

  • public QueryDatabase(Connection databaseConnection)

QueryDatabase Method

  • public boolean createTable(String tableName)
  • public boolean insertIntoDatabase(String tableName, HashMap<String, String> dataToInsertInDatabase)
  • public boolean deleteTableFromDatabase(String tableName)
  • public boolean hasTable(String tableName)

The createTable method creates table in the database if the table doesn't exist, the insertIntoDatabase method takes the table name,HashMap of the data and insert it into the database.

ConnectiondatabaseConnection = DriverManager.getConnection(DatabaseConfig.DATABASE_TYPE.getRealName() +
DatabaseConfig.DATABASE_NAME.getGetRealName(),
DatabaseConfig.DATABASE_USER_NAME.getGetRealName(), DatabaseConfig.DATABASE_PASSWORD.getGetRealName());
QueryDatabasequeryDatabase = newQueryDatabase(databaseConnection);

checkpoint.andela.log

LogWriter Class

LogWriter class writes the activity of the DBWriter and FileParser thread into an output text file. LogWriter implements Runnable.

LogWriter Constructor

  • public LogWriter(String filePath)

LogWriter Method

  • public void writeToLogger(String logString)
  • public void run()

checkpoint.andela.buffer

DataAndLogBuffer Class

DataAndLogBuffer class is a Singleton class that keeps track of the data buffer and log buffer.

DataAndLogBuffer Constructor

  • private DataAndLogBuffer()

DataAndLogBuffer Methods

  • public static synchronized DataAndLogBuffer getInstance()
  • public void addItemToDataBuffer(HashMap<String, String> itemToAddToBuffer)
  • public HashMap<String, String> removeItemFromDataBuffer()
  • public void addItemToLogBuffer(String logToAdd)
  • public String removeItemFromLogBuffer()
  • public ArrayBlockingQueue<String> getBufferUsedToStoreLogInfo()
  • public ArrayBlockingQueue<HashMap<String, String>> getBufferUsedToStoreData()
  • public boolean hasDataToRead()
  • public void setDataAvailable(boolean flag)

UML Diagram

fileparser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

File to DB Parser

File To DB Parser is a multi-thread program that reads data from a reaction file and writes the data into Database. The reaction file is a key : value paired data. Key is separated from value with " - ", the File has comment line that starts with "#". Data is separated by "//", the snippet below shows a sample of the file.

	# Authors:
# Pallavi Subhraveti
# Quang Ong
# Ingrid Keseler
# Anamika Kothari
# Tim Holland
UNIQUE-ID - ALKAPHOSPHA-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
LEFT - WATER
ORPHAN? - :NO
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - |Alcohols|
RIGHT - |Pi|
//
UNIQUE-ID - 6-PHOSPHO-BETA-GALACTOSIDASE-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 16 11 10 12 13 14 15 17 9) (((CPD-1241 0 15)
LEFT - WATER
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - CPD-1241
RIGHT - |Alcohols|
//

##checkpoint.andela.Model

###FileDelimeters Class

####Reading a different Type of File

This project was designed with reactions.dat file structure in mind. A client can read in another key value pair file, client will have to change the FileDelimeters enum class in checkpoint.andela.model package by replacing the KEY_VALUE_SEPARATOR, COMMENT and END_OF_DATA parameter.

KEY_VALUE_SEPARATOR(" - "),
COMMENT("#"),
END_OF_DATA("//");

###DatabaseConfig.java

Client using this project has to create a MYSQL database and change the configuration settings in this file

DATABASE_USER_NAME("root"),
DATABASE_PASSWORD("password"),
DATABASE_NAME ("reactiondb"),
TABLE_NAME("reactions");
DATABASE_TYPE("jdbc:mysql://localhost:3306/");

###InputFieldModel

Client will specify the keys he/she wants to read from the file and save to database.

unique_id("UNIQUE-ID"),
common_name("COMMON-NAME"),
atom_mappings("ATOM-MAPPINGS"),
credits("CREDITS"),
ec_number("EC-NUMBER"),
enzymatic_reaction("ENZYMATIC-REACTION"),
in_pathway("IN-PATHWAY"),
orphan("ORPHAN?"),
physiologically_relevant("PHYSIOLOGICALLY-RELEVANT?"),
reation_direction("REACTION-DIRECTION");

##checkpoint.andela.main

Class MainApp

Class MainApp is the gateway into the Application. A Client will have to pass the path to the reaction file into the class.

MainApp Constructor

  • public MainApp(String filePath)

MainApp Method

To start the Application, clients have to call the method runApplication. The Method implements the classes DBWriter, FileParser and LogWriter Class as Threads.

  • public void runApplication()

Implementation

MainAppmainApp = newMainApp("/Users/Spykins/IdeaProjects/FileToDBParser/res/reactions.dat");
mainApp.runApplication();

##checkpoint.andela.parser

File Parser Class

FileParser class implements Runnable. The FileParser Constructor takes in the File Path and it has a private variable readData of type ReadData.

FileParser Constructor

public FileParser(String filePath)

FileParser Methods

  • public void run()
  • private void initializeFileParser()

The run method is called when the Thread Starts, the run method calls initializeFileParser() which adds item into the buffer.

ReadData Class

The ReadData class reads in Data from the file, it takes the File Path in the constructor. It has a public method getData() which reads the file line by line, it stops when it gets to the end of data. It returns a HashMap of the Key and Value in the data and returns null when it gets to end of file.

FileParser Constructor

  • public ReadData(String pathToFile)

FileParser Method

  • public HashMap<String,String> getData()

checkpoint.andela.db

###DBWriter Class

DBWriter implements Runnable, it takes Data from the Buffer and writes it into the database.

DBWriter Constructor

  • public DBWriter()

DBWriter Methods

  • public void insertIntoDatabase (HashMap<String, String> dataToInsertInDatabase )
  • public void run()

insertIntoDatabase() takes data from the data Buffer and stores into database. The run method is called when the thread starts, The run method calls insertIntoDatabase method which removes the data stored into the Data buffer and writes it into database.

QueryDatabase Class

QueryDatabase is the class that queries the Database. The QueryDatabase constructor takes in Connection object as a parameter.

QueryDatabase Constructor

  • public QueryDatabase(Connection databaseConnection)

QueryDatabase Method

  • public boolean createTable(String tableName)
  • public boolean insertIntoDatabase(String tableName, HashMap<String, String> dataToInsertInDatabase)
  • public boolean deleteTableFromDatabase(String tableName)
  • public boolean hasTable(String tableName)

The createTable method creates table in the database if the table doesn't exist, the insertIntoDatabase method takes the table name,HashMap of the data and insert it into the database.

ConnectiondatabaseConnection = DriverManager.getConnection(DatabaseConfig.DATABASE_TYPE.getRealName() +
DatabaseConfig.DATABASE_NAME.getGetRealName(),
DatabaseConfig.DATABASE_USER_NAME.getGetRealName(), DatabaseConfig.DATABASE_PASSWORD.getGetRealName());
QueryDatabasequeryDatabase = newQueryDatabase(databaseConnection);

checkpoint.andela.log

LogWriter Class

LogWriter class writes the activity of the DBWriter and FileParser thread into an output text file. LogWriter implements Runnable.

LogWriter Constructor

  • public LogWriter(String filePath)

LogWriter Method

  • public void writeToLogger(String logString)
  • public void run()

checkpoint.andela.buffer

DataAndLogBuffer Class

DataAndLogBuffer class is a Singleton class that keeps track of the data buffer and log buffer.

DataAndLogBuffer Constructor

  • private DataAndLogBuffer()

DataAndLogBuffer Methods

  • public static synchronized DataAndLogBuffer getInstance()
  • public void addItemToDataBuffer(HashMap<String, String> itemToAddToBuffer)
  • public HashMap<String, String> removeItemFromDataBuffer()
  • public void addItemToLogBuffer(String logToAdd)
  • public String removeItemFromLogBuffer()
  • public ArrayBlockingQueue<String> getBufferUsedToStoreLogInfo()
  • public ArrayBlockingQueue<HashMap<String, String>> getBufferUsedToStoreData()
  • public boolean hasDataToRead()
  • public void setDataAvailable(boolean flag)

UML Diagram

fileparser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

File to DB Parser

File To DB Parser is a multi-thread program that reads data from a reaction file and writes the data into Database. The reaction file is a key : value paired data. Key is separated from value with " - ", the File has comment line that starts with "#". Data is separated by "//", the snippet below shows a sample of the file.

	# Authors:
# Pallavi Subhraveti
# Quang Ong
# Ingrid Keseler
# Anamika Kothari
# Tim Holland
UNIQUE-ID - ALKAPHOSPHA-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
LEFT - WATER
ORPHAN? - :NO
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - |Alcohols|
RIGHT - |Pi|
//
UNIQUE-ID - 6-PHOSPHO-BETA-GALACTOSIDASE-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 16 11 10 12 13 14 15 17 9) (((CPD-1241 0 15)
LEFT - WATER
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - CPD-1241
RIGHT - |Alcohols|
//

##checkpoint.andela.Model

###FileDelimeters Class

####Reading a different Type of File

This project was designed with reactions.dat file structure in mind. A client can read in another key value pair file, client will have to change the FileDelimeters enum class in checkpoint.andela.model package by replacing the KEY_VALUE_SEPARATOR, COMMENT and END_OF_DATA parameter.

KEY_VALUE_SEPARATOR(" - "),
COMMENT("#"),
END_OF_DATA("//");

###DatabaseConfig.java

Client using this project has to create a MYSQL database and change the configuration settings in this file

DATABASE_USER_NAME("root"),
DATABASE_PASSWORD("password"),
DATABASE_NAME ("reactiondb"),
TABLE_NAME("reactions");
DATABASE_TYPE("jdbc:mysql://localhost:3306/");

###InputFieldModel

Client will specify the keys he/she wants to read from the file and save to database.

unique_id("UNIQUE-ID"),
common_name("COMMON-NAME"),
atom_mappings("ATOM-MAPPINGS"),
credits("CREDITS"),
ec_number("EC-NUMBER"),
enzymatic_reaction("ENZYMATIC-REACTION"),
in_pathway("IN-PATHWAY"),
orphan("ORPHAN?"),
physiologically_relevant("PHYSIOLOGICALLY-RELEVANT?"),
reation_direction("REACTION-DIRECTION");

##checkpoint.andela.main

Class MainApp

Class MainApp is the gateway into the Application. A Client will have to pass the path to the reaction file into the class.

MainApp Constructor

  • public MainApp(String filePath)

MainApp Method

To start the Application, clients have to call the method runApplication. The Method implements the classes DBWriter, FileParser and LogWriter Class as Threads.

  • public void runApplication()

Implementation

MainAppmainApp = newMainApp("/Users/Spykins/IdeaProjects/FileToDBParser/res/reactions.dat");
mainApp.runApplication();

##checkpoint.andela.parser

File Parser Class

FileParser class implements Runnable. The FileParser Constructor takes in the File Path and it has a private variable readData of type ReadData.

FileParser Constructor

public FileParser(String filePath)

FileParser Methods

  • public void run()
  • private void initializeFileParser()

The run method is called when the Thread Starts, the run method calls initializeFileParser() which adds item into the buffer.

ReadData Class

The ReadData class reads in Data from the file, it takes the File Path in the constructor. It has a public method getData() which reads the file line by line, it stops when it gets to the end of data. It returns a HashMap of the Key and Value in the data and returns null when it gets to end of file.

FileParser Constructor

  • public ReadData(String pathToFile)

FileParser Method

  • public HashMap<String,String> getData()

checkpoint.andela.db

###DBWriter Class

DBWriter implements Runnable, it takes Data from the Buffer and writes it into the database.

DBWriter Constructor

  • public DBWriter()

DBWriter Methods

  • public void insertIntoDatabase (HashMap<String, String> dataToInsertInDatabase )
  • public void run()

insertIntoDatabase() takes data from the data Buffer and stores into database. The run method is called when the thread starts, The run method calls insertIntoDatabase method which removes the data stored into the Data buffer and writes it into database.

QueryDatabase Class

QueryDatabase is the class that queries the Database. The QueryDatabase constructor takes in Connection object as a parameter.

QueryDatabase Constructor

  • public QueryDatabase(Connection databaseConnection)

QueryDatabase Method

  • public boolean createTable(String tableName)
  • public boolean insertIntoDatabase(String tableName, HashMap<String, String> dataToInsertInDatabase)
  • public boolean deleteTableFromDatabase(String tableName)
  • public boolean hasTable(String tableName)

The createTable method creates table in the database if the table doesn't exist, the insertIntoDatabase method takes the table name,HashMap of the data and insert it into the database.

ConnectiondatabaseConnection = DriverManager.getConnection(DatabaseConfig.DATABASE_TYPE.getRealName() +
DatabaseConfig.DATABASE_NAME.getGetRealName(),
DatabaseConfig.DATABASE_USER_NAME.getGetRealName(), DatabaseConfig.DATABASE_PASSWORD.getGetRealName());
QueryDatabasequeryDatabase = newQueryDatabase(databaseConnection);

checkpoint.andela.log

LogWriter Class

LogWriter class writes the activity of the DBWriter and FileParser thread into an output text file. LogWriter implements Runnable.

LogWriter Constructor

  • public LogWriter(String filePath)

LogWriter Method

  • public void writeToLogger(String logString)
  • public void run()

checkpoint.andela.buffer

DataAndLogBuffer Class

DataAndLogBuffer class is a Singleton class that keeps track of the data buffer and log buffer.

DataAndLogBuffer Constructor

  • private DataAndLogBuffer()

DataAndLogBuffer Methods

  • public static synchronized DataAndLogBuffer getInstance()
  • public void addItemToDataBuffer(HashMap<String, String> itemToAddToBuffer)
  • public HashMap<String, String> removeItemFromDataBuffer()
  • public void addItemToLogBuffer(String logToAdd)
  • public String removeItemFromLogBuffer()
  • public ArrayBlockingQueue<String> getBufferUsedToStoreLogInfo()
  • public ArrayBlockingQueue<HashMap<String, String>> getBufferUsedToStoreData()
  • public boolean hasDataToRead()
  • public void setDataAvailable(boolean flag)

UML Diagram

fileparser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

File to DB Parser

File To DB Parser is a multi-thread program that reads data from a reaction file and writes the data into Database. The reaction file is a key : value paired data. Key is separated from value with " - ", the File has comment line that starts with "#". Data is separated by "//", the snippet below shows a sample of the file.

	# Authors:
# Pallavi Subhraveti
# Quang Ong
# Ingrid Keseler
# Anamika Kothari
# Tim Holland
UNIQUE-ID - ALKAPHOSPHA-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
LEFT - WATER
ORPHAN? - :NO
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - |Alcohols|
RIGHT - |Pi|
//
UNIQUE-ID - 6-PHOSPHO-BETA-GALACTOSIDASE-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 16 11 10 12 13 14 15 17 9) (((CPD-1241 0 15)
LEFT - WATER
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - CPD-1241
RIGHT - |Alcohols|
//

##checkpoint.andela.Model

###FileDelimeters Class

####Reading a different Type of File

This project was designed with reactions.dat file structure in mind. A client can read in another key value pair file, client will have to change the FileDelimeters enum class in checkpoint.andela.model package by replacing the KEY_VALUE_SEPARATOR, COMMENT and END_OF_DATA parameter.

KEY_VALUE_SEPARATOR(" - "),
COMMENT("#"),
END_OF_DATA("//");

###DatabaseConfig.java

Client using this project has to create a MYSQL database and change the configuration settings in this file

DATABASE_USER_NAME("root"),
DATABASE_PASSWORD("password"),
DATABASE_NAME ("reactiondb"),
TABLE_NAME("reactions");
DATABASE_TYPE("jdbc:mysql://localhost:3306/");

###InputFieldModel

Client will specify the keys he/she wants to read from the file and save to database.

unique_id("UNIQUE-ID"),
common_name("COMMON-NAME"),
atom_mappings("ATOM-MAPPINGS"),
credits("CREDITS"),
ec_number("EC-NUMBER"),
enzymatic_reaction("ENZYMATIC-REACTION"),
in_pathway("IN-PATHWAY"),
orphan("ORPHAN?"),
physiologically_relevant("PHYSIOLOGICALLY-RELEVANT?"),
reation_direction("REACTION-DIRECTION");

##checkpoint.andela.main

Class MainApp

Class MainApp is the gateway into the Application. A Client will have to pass the path to the reaction file into the class.

MainApp Constructor

  • public MainApp(String filePath)

MainApp Method

To start the Application, clients have to call the method runApplication. The Method implements the classes DBWriter, FileParser and LogWriter Class as Threads.

  • public void runApplication()

Implementation

MainAppmainApp = newMainApp("/Users/Spykins/IdeaProjects/FileToDBParser/res/reactions.dat");
mainApp.runApplication();

##checkpoint.andela.parser

File Parser Class

FileParser class implements Runnable. The FileParser Constructor takes in the File Path and it has a private variable readData of type ReadData.

FileParser Constructor

public FileParser(String filePath)

FileParser Methods

  • public void run()
  • private void initializeFileParser()

The run method is called when the Thread Starts, the run method calls initializeFileParser() which adds item into the buffer.

ReadData Class

The ReadData class reads in Data from the file, it takes the File Path in the constructor. It has a public method getData() which reads the file line by line, it stops when it gets to the end of data. It returns a HashMap of the Key and Value in the data and returns null when it gets to end of file.

FileParser Constructor

  • public ReadData(String pathToFile)

FileParser Method

  • public HashMap<String,String> getData()

checkpoint.andela.db

###DBWriter Class

DBWriter implements Runnable, it takes Data from the Buffer and writes it into the database.

DBWriter Constructor

  • public DBWriter()

DBWriter Methods

  • public void insertIntoDatabase (HashMap<String, String> dataToInsertInDatabase )
  • public void run()

insertIntoDatabase() takes data from the data Buffer and stores into database. The run method is called when the thread starts, The run method calls insertIntoDatabase method which removes the data stored into the Data buffer and writes it into database.

QueryDatabase Class

QueryDatabase is the class that queries the Database. The QueryDatabase constructor takes in Connection object as a parameter.

QueryDatabase Constructor

  • public QueryDatabase(Connection databaseConnection)

QueryDatabase Method

  • public boolean createTable(String tableName)
  • public boolean insertIntoDatabase(String tableName, HashMap<String, String> dataToInsertInDatabase)
  • public boolean deleteTableFromDatabase(String tableName)
  • public boolean hasTable(String tableName)

The createTable method creates table in the database if the table doesn't exist, the insertIntoDatabase method takes the table name,HashMap of the data and insert it into the database.

ConnectiondatabaseConnection = DriverManager.getConnection(DatabaseConfig.DATABASE_TYPE.getRealName() +
DatabaseConfig.DATABASE_NAME.getGetRealName(),
DatabaseConfig.DATABASE_USER_NAME.getGetRealName(), DatabaseConfig.DATABASE_PASSWORD.getGetRealName());
QueryDatabasequeryDatabase = newQueryDatabase(databaseConnection);

checkpoint.andela.log

LogWriter Class

LogWriter class writes the activity of the DBWriter and FileParser thread into an output text file. LogWriter implements Runnable.

LogWriter Constructor

  • public LogWriter(String filePath)

LogWriter Method

  • public void writeToLogger(String logString)
  • public void run()

checkpoint.andela.buffer

DataAndLogBuffer Class

DataAndLogBuffer class is a Singleton class that keeps track of the data buffer and log buffer.

DataAndLogBuffer Constructor

  • private DataAndLogBuffer()

DataAndLogBuffer Methods

  • public static synchronized DataAndLogBuffer getInstance()
  • public void addItemToDataBuffer(HashMap<String, String> itemToAddToBuffer)
  • public HashMap<String, String> removeItemFromDataBuffer()
  • public void addItemToLogBuffer(String logToAdd)
  • public String removeItemFromLogBuffer()
  • public ArrayBlockingQueue<String> getBufferUsedToStoreLogInfo()
  • public ArrayBlockingQueue<HashMap<String, String>> getBufferUsedToStoreData()
  • public boolean hasDataToRead()
  • public void setDataAvailable(boolean flag)

UML Diagram

fileparser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

File to DB Parser

File To DB Parser is a multi-thread program that reads data from a reaction file and writes the data into Database. The reaction file is a key : value paired data. Key is separated from value with " - ", the File has comment line that starts with "#". Data is separated by "//", the snippet below shows a sample of the file.

	# Authors:
# Pallavi Subhraveti
# Quang Ong
# Ingrid Keseler
# Anamika Kothari
# Tim Holland
UNIQUE-ID - ALKAPHOSPHA-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
LEFT - WATER
ORPHAN? - :NO
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - |Alcohols|
RIGHT - |Pi|
//
UNIQUE-ID - 6-PHOSPHO-BETA-GALACTOSIDASE-RXN
TYPES - Small-Molecule-Reactions
TYPES - Chemical-Reactions
ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 16 11 10 12 13 14 15 17 9) (((CPD-1241 0 15)
LEFT - WATER
PHYSIOLOGICALLY-RELEVANT? - T
RIGHT - CPD-1241
RIGHT - |Alcohols|
//

##checkpoint.andela.Model

###FileDelimeters Class

####Reading a different Type of File

This project was designed with reactions.dat file structure in mind. A client can read in another key value pair file, client will have to change the FileDelimeters enum class in checkpoint.andela.model package by replacing the KEY_VALUE_SEPARATOR, COMMENT and END_OF_DATA parameter.

KEY_VALUE_SEPARATOR(" - "),
COMMENT("#"),
END_OF_DATA("//");

###DatabaseConfig.java

Client using this project has to create a MYSQL database and change the configuration settings in this file

DATABASE_USER_NAME("root"),
DATABASE_PASSWORD("password"),
DATABASE_NAME ("reactiondb"),
TABLE_NAME("reactions");
DATABASE_TYPE("jdbc:mysql://localhost:3306/");

###InputFieldModel

Client will specify the keys he/she wants to read from the file and save to database.

unique_id("UNIQUE-ID"),
common_name("COMMON-NAME"),
atom_mappings("ATOM-MAPPINGS"),
credits("CREDITS"),
ec_number("EC-NUMBER"),
enzymatic_reaction("ENZYMATIC-REACTION"),
in_pathway("IN-PATHWAY"),
orphan("ORPHAN?"),
physiologically_relevant("PHYSIOLOGICALLY-RELEVANT?"),
reation_direction("REACTION-DIRECTION");

##checkpoint.andela.main

Class MainApp

Class MainApp is the gateway into the Application. A Client will have to pass the path to the reaction file into the class.

MainApp Constructor

  • public MainApp(String filePath)

MainApp Method

To start the Application, clients have to call the method runApplication. The Method implements the classes DBWriter, FileParser and LogWriter Class as Threads.

  • public void runApplication()

Implementation

MainAppmainApp = newMainApp("/Users/Spykins/IdeaProjects/FileToDBParser/res/reactions.dat");
mainApp.runApplication();

##checkpoint.andela.parser

File Parser Class

FileParser class implements Runnable. The FileParser Constructor takes in the File Path and it has a private variable readData of type ReadData.

FileParser Constructor

public FileParser(String filePath)

FileParser Methods

  • public void run()
  • private void initializeFileParser()

The run method is called when the Thread Starts, the run method calls initializeFileParser() which adds item into the buffer.

ReadData Class

The ReadData class reads in Data from the file, it takes the File Path in the constructor. It has a public method getData() which reads the file line by line, it stops when it gets to the end of data. It returns a HashMap of the Key and Value in the data and returns null when it gets to end of file.

FileParser Constructor

  • public ReadData(String pathToFile)

FileParser Method

  • public HashMap<String,String> getData()

checkpoint.andela.db

###DBWriter Class

DBWriter implements Runnable, it takes Data from the Buffer and writes it into the database.

DBWriter Constructor

  • public DBWriter()

DBWriter Methods

  • public void insertIntoDatabase (HashMap<String, String> dataToInsertInDatabase )
  • public void run()

insertIntoDatabase() takes data from the data Buffer and stores into database. The run method is called when the thread starts, The run method calls insertIntoDatabase method which removes the data stored into the Data buffer and writes it into database.

QueryDatabase Class

QueryDatabase is the class that queries the Database. The QueryDatabase constructor takes in Connection object as a parameter.

QueryDatabase Constructor

  • public QueryDatabase(Connection databaseConnection)

QueryDatabase Method

  • public boolean createTable(String tableName)
  • public boolean insertIntoDatabase(String tableName, HashMap<String, String> dataToInsertInDatabase)
  • public boolean deleteTableFromDatabase(String tableName)
  • public boolean hasTable(String tableName)

The createTable method creates table in the database if the table doesn't exist, the insertIntoDatabase method takes the table name,HashMap of the data and insert it into the database.

ConnectiondatabaseConnection = DriverManager.getConnection(DatabaseConfig.DATABASE_TYPE.getRealName() +
DatabaseConfig.DATABASE_NAME.getGetRealName(),
DatabaseConfig.DATABASE_USER_NAME.getGetRealName(), DatabaseConfig.DATABASE_PASSWORD.getGetRealName());
QueryDatabasequeryDatabase = newQueryDatabase(databaseConnection);

checkpoint.andela.log

LogWriter Class

LogWriter class writes the activity of the DBWriter and FileParser thread into an output text file. LogWriter implements Runnable.

LogWriter Constructor

  • public LogWriter(String filePath)

LogWriter Method

  • public void writeToLogger(String logString)
  • public void run()

checkpoint.andela.buffer

DataAndLogBuffer Class

DataAndLogBuffer class is a Singleton class that keeps track of the data buffer and log buffer.

DataAndLogBuffer Constructor

  • private DataAndLogBuffer()

DataAndLogBuffer Methods

  • public static synchronized DataAndLogBuffer getInstance()
  • public void addItemToDataBuffer(HashMap<String, String> itemToAddToBuffer)
  • public HashMap<String, String> removeItemFromDataBuffer()
  • public void addItemToLogBuffer(String logToAdd)
  • public String removeItemFromLogBuffer()
  • public ArrayBlockingQueue<String> getBufferUsedToStoreLogInfo()
  • public ArrayBlockingQueue<HashMap<String, String>> getBufferUsedToStoreData()
  • public boolean hasDataToRead()
  • public void setDataAvailable(boolean flag)

UML Diagram

fileparser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages