- Database and Basic Linking
- Login Page and Basic Functionality
- Stanford Movies Dataset Ingestor & Employee Dashboard
- Search & Android Login and Search
- JMeter Testing
This Webapp and XML Parser portions of this project are using Maven. Deployment can be done the same way as instructed.
- Clone the repo.
git clone https://github.com/iancooperman/Fabflix.git
- Inside the repo, where
pom.xml
for the webapp is, build the .war file.mvn package
- Copy the newly built .war file to the tomcat webapps folder.
1a. Ensure you have manually created or copied a DBLoginInfo.java
to the /parser
source directory, as this repository does not provide it.
-
Inside the repo, where pom.xml for the XML Parser is, build the parser.
mvn clean package
-
Run the parser.
mvn exec:java -Dexec.mainClass="parser.MainParser"
- Open the Android project (located under /Android) in Android Studio and compile it.
Alpha-numeric character options in the "Browse" section correspond to LIKE
patterns of the form {character}%
. For example, "A" corresponds to a%
. "*" uses a specific line of SQL,
WHERE ...
AND movies.title NOT REGEXP '^[a-zA-Z0-9].*$'
In the "Search" section, the title, director, and star text boxes translate to LIKE
patterns of the form %{input}%
. For example, "Tom H" translates to
%tom h%
.
My parser utilizes a few in-memory hash tables, specifically for storing mappings. The first mapping is between XMl-file-given film ids and newly genreated movieIds for the database. The second mapping is between star names from casts124.xml and starIds genreated during the parsing of actors63.xml.
It is unknown how much this improved performance, as I used this from the get-go. However, as seen in the Project 3 demo video, it ran in less than two minutes and gave the expected results.
Include the filename/path of all code/configuration files in GitHub of using JDBC Connection Pooling.
Servlets involving JDBC connections can be found in Webapp/src/main/java
. The context.xml
file, modified for connection pooling can be found in Webapp/web/META-INF
.
All database connections have had connection pooling enabled. As seen in the JMeter test data, it has yielded a significant performance improvement by keeping connections open and reusing them.
Connection Pooling improves Master/Slave database read/write performance by saving open connections to be used later. It's enabled within the Webapp, so it's enabled on the Master and Slave server instances.
Include the filename/path of all code/configuration files in GitHub of routing queries to Master/Slave SQL.
Servlets involving JDBC connections can be found in Webapp/src/main/java
.
The IP address of the master server was hardcoded into the Webapp. All servlets involving writing to the master MySQL server have been recoded to use this specific IP address. MySQL reads use the local server via localhost.
log_processing.py
is a Python file. It's usage requires Python 3.6+, as it uses f-strings for output. As seen in the Project 5 demo video, the most convenient way to run it is to drag and drop the log files onto log_processing.py
. Alternatively, you can run log_processing.py
from a command line using:
python log_processing.py timelog1.csv timelog2.csv ...
The logs themselves can be found in the JMeter
folder, as can the graph images and JMeter tests.
log_processing.py
can be found under Webapp
.
The graph images may not show up in the tables, but they DO exist. Please check the appropriate file paths within the repo for the images. Thank you for your understanding.