<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ssingh54</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ssingh54"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ssingh54"/>
	<updated>2026-05-15T19:07:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145528</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145528"/>
		<updated>2022-04-27T16:53:30Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/AssignmentTests.java '''AssignmentTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/TestResultTests.java '''TestResultTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''[https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/FrontEndTests.java FrontEndTests.java]''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/SubmissionCollectionTests.java '''SubmissionCollectionTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Default or Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:mvn.jpg|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''[https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/pom.xml pom.xml]''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/.github/workflows/maven-build-merge.yml '''maven-build-merge.yml'''] and [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/.github/workflows/maven-build-pr.yml '''maven-build-pr.yml'''] files are created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution the following files are modified:&lt;br /&gt;
* Assignment.java &amp;lt;br&amp;gt;&lt;br /&gt;
* BackEnd.java &amp;lt;br&amp;gt; &lt;br /&gt;
* FrontEnd.java &amp;lt;br&amp;gt; &lt;br /&gt;
* FrontEndView.java &amp;lt;br&amp;gt; &lt;br /&gt;
* MySQL5xDataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL80DataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* OracleDataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* Submission.java &amp;lt;br&amp;gt;&lt;br /&gt;
* SubmissionCollection.java &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:error_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; We have redirected the error stream using the following code.]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
=== Track our works for collaboration  ===&lt;br /&gt;
&lt;br /&gt;
We have used Github projects to keep a track of all the tasks and the progress associated with those tasks.&lt;br /&gt;
&lt;br /&gt;
[[File:progress.png|1200px|project tasks]]&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&amp;lt;br&amp;gt;&lt;br /&gt;
The demo can be found [https://www.youtube.com/watch?v=_REy_S142bQ&amp;amp;ab_channel=RachitSharma].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Error_1.png&amp;diff=145527</id>
		<title>File:Error 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Error_1.png&amp;diff=145527"/>
		<updated>2022-04-27T16:53:17Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145526</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145526"/>
		<updated>2022-04-27T16:48:30Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Files modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/AssignmentTests.java '''AssignmentTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/TestResultTests.java '''TestResultTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''[https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/FrontEndTests.java FrontEndTests.java]''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/SubmissionCollectionTests.java '''SubmissionCollectionTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Default or Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:mvn.jpg|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''[https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/pom.xml pom.xml]''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/.github/workflows/maven-build-merge.yml '''maven-build-merge.yml'''] and [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/.github/workflows/maven-build-pr.yml '''maven-build-pr.yml'''] files are created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution the following files are modified:&lt;br /&gt;
* Assignment.java &amp;lt;br&amp;gt;&lt;br /&gt;
* BackEnd.java &amp;lt;br&amp;gt; &lt;br /&gt;
* FrontEnd.java &amp;lt;br&amp;gt; &lt;br /&gt;
* FrontEndView.java &amp;lt;br&amp;gt; &lt;br /&gt;
* MySQL5xDataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL80DataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* OracleDataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* Submission.java &amp;lt;br&amp;gt;&lt;br /&gt;
* SubmissionCollection.java &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:error.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; We have redirected the error stream using the following code.]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
=== Track our works for collaboration  ===&lt;br /&gt;
&lt;br /&gt;
We have used Github projects to keep a track of all the tasks and the progress associated with those tasks.&lt;br /&gt;
&lt;br /&gt;
[[File:progress.png|1200px|project tasks]]&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&amp;lt;br&amp;gt;&lt;br /&gt;
The demo can be found [https://www.youtube.com/watch?v=_REy_S142bQ&amp;amp;ab_channel=RachitSharma].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Submissions_1.png&amp;diff=145525</id>
		<title>File:Submissions 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Submissions_1.png&amp;diff=145525"/>
		<updated>2022-04-27T16:48:18Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145524</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145524"/>
		<updated>2022-04-27T16:44:52Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Files modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/AssignmentTests.java '''AssignmentTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/TestResultTests.java '''TestResultTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''[https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/FrontEndTests.java FrontEndTests.java]''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/src/sqlfe/junit/SubmissionCollectionTests.java '''SubmissionCollectionTests.java'''] file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Default or Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:mvn.jpg|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''[https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/pom.xml pom.xml]''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/.github/workflows/maven-build-merge.yml '''maven-build-merge.yml'''] and [https://github.com/Sakshamrzt/SQL-File-Evaluation/blob/master/.github/workflows/maven-build-pr.yml '''maven-build-pr.yml'''] files are created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution the following files are modified:&lt;br /&gt;
* Assignment.java &amp;lt;br&amp;gt;&lt;br /&gt;
* BackEnd.java &amp;lt;br&amp;gt; &lt;br /&gt;
* FrontEnd.java &amp;lt;br&amp;gt; &lt;br /&gt;
* FrontEndView.java &amp;lt;br&amp;gt; &lt;br /&gt;
* MySQL5xDataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL80DataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* OracleDataAccessObject.java &amp;lt;br&amp;gt;&lt;br /&gt;
* Submission.java &amp;lt;br&amp;gt;&lt;br /&gt;
* SubmissionCollection.java &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:error.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; We have redirected the error stream using the following code.]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
=== Track our works for collaboration  ===&lt;br /&gt;
&lt;br /&gt;
We have used Github projects to keep a track of all the tasks and the progress associated with those tasks.&lt;br /&gt;
&lt;br /&gt;
[[File:progress.png|1200px|project tasks]]&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&amp;lt;br&amp;gt;&lt;br /&gt;
The demo can be found [https://www.youtube.com/watch?v=_REy_S142bQ&amp;amp;ab_channel=RachitSharma].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend_1.png&amp;diff=145523</id>
		<title>File:Backend 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend_1.png&amp;diff=145523"/>
		<updated>2022-04-27T16:44:33Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145495</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145495"/>
		<updated>2022-04-27T05:48:19Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution '''maven-build-merge.yml''' and '''maven-build-pr.yml''' files are created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution the following files are modified '''Assignment.java , BackEnd.java , FrontEnd.java , FrontEndView.java , MySQL5xDataAccessObject.java , MySQL80DataAccessObject.java , OracleDataAccessObject.java , Submission.java and SubmissionCollection.java''' .&lt;br /&gt;
&lt;br /&gt;
[[File:error.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; We have redirected the error stream using the following code.]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145494</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145494"/>
		<updated>2022-04-27T05:47:27Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution '''maven-build-merge.yml''' and '''maven-build-pr.yml''' files are created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution the following files are modified '''Assignment.java , BackEnd.java , FrontEnd.java , FrontEndView.java , MySQL5xDataAccessObject.java , MySQL80DataAccessObject.java , OracleDataAccessObject.java , Submission.java and SubmissionCollection.java''' .&lt;br /&gt;
&lt;br /&gt;
We have redirected the error stream using the following code.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Error.png&amp;diff=145493</id>
		<title>File:Error.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Error.png&amp;diff=145493"/>
		<updated>2022-04-27T05:47:00Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: Ssingh54 uploaded a new version of File:Error.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145492</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145492"/>
		<updated>2022-04-27T05:44:38Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution '''maven-build-merge.yml''' and '''maven-build-pr.yml''' files are created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution the following files are modified '''Assignment.java , BackEnd.java , FrontEnd.java , FrontEndView.java , MySQL5xDataAccessObject.java , MySQL80DataAccessObject.java , OracleDataAccessObject.java , Submission.java and SubmissionCollection.java''' .&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145491</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145491"/>
		<updated>2022-04-27T05:44:12Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution '''maven-build-merge.yml''' and '''maven-build-pr.yml''' files are created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution the following files are modified Assignment.java , BackEnd.java , FrontEnd.java , FrontEndView.java , MySQL5xDataAccessObject.java , MySQL80DataAccessObject.java , OracleDataAccessObject.java , Submission.java and SubmissionCollection.java .&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145490</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145490"/>
		<updated>2022-04-27T05:29:19Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution '''maven-build-merge.yml''' and '''maven-build-pr.yml''' files are created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145489</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145489"/>
		<updated>2022-04-27T05:28:29Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution '''maven-build-merge.yml''' and '''maven-build-pr.yml''' file is created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145488</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145488"/>
		<updated>2022-04-27T05:27:28Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution '''maven-build-merge.yml''' file is created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145487</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145487"/>
		<updated>2022-04-27T05:27:10Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the proposed solution'''maven-build-merge.yml''' file is created.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145486</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145486"/>
		<updated>2022-04-27T05:17:56Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
To implement the proposed changes we have added '''pom.xml''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145485</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145485"/>
		<updated>2022-04-27T05:14:22Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* SubmissionCollection.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''SubmissionCollectionTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145484</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145484"/>
		<updated>2022-04-27T05:13:12Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* FrontEnd.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''FrontEndTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145483</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145483"/>
		<updated>2022-04-27T05:11:55Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* TestResult.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''TestResultTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145482</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145482"/>
		<updated>2022-04-27T05:08:12Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Files modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145481</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145481"/>
		<updated>2022-04-27T05:07:48Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Submissions.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
Submissions.java&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145480</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145480"/>
		<updated>2022-04-27T05:07:29Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* BackEnd.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BackEnd.java &lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
== Submissions.java ==&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145479</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145479"/>
		<updated>2022-04-27T05:07:07Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Files modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BackEnd.java ==&lt;br /&gt;
&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Submissions.java ==&lt;br /&gt;
&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145478</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145478"/>
		<updated>2022-04-27T05:05:26Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Files modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Files modified===&lt;br /&gt;
&lt;br /&gt;
''BackEnd.java''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
''Submissions.java''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145477</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145477"/>
		<updated>2022-04-27T05:05:00Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Files modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
====Files modified====&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145476</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145476"/>
		<updated>2022-04-27T05:04:10Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Output */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
==Files modified==&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145475</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145475"/>
		<updated>2022-04-27T05:01:14Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Assignment.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the above scenarios we have created '''AssignmentTests.java''' file.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145474</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145474"/>
		<updated>2022-04-27T04:58:16Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Assignment.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file. Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145473</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145473"/>
		<updated>2022-04-27T04:56:59Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Assignment.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file. Below are the changes made to the respective files.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package sqlfe.junit;&lt;br /&gt;
&lt;br /&gt;
import org.junit.After;&lt;br /&gt;
import org.junit.Before;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import sqlfe.general.Assignment;&lt;br /&gt;
import sqlfe.general.BackEnd;&lt;br /&gt;
import sqlfe.util.Utilities;&lt;br /&gt;
&lt;br /&gt;
import java.io.*;&lt;br /&gt;
&lt;br /&gt;
import static org.junit.Assert.assertEquals;&lt;br /&gt;
import static org.junit.Assert.fail;&lt;br /&gt;
&lt;br /&gt;
public class AssignmentTests extends AbstractTest {&lt;br /&gt;
&lt;br /&gt;
    private  BackEnd backEnd ;&lt;br /&gt;
&lt;br /&gt;
    @Before&lt;br /&gt;
    public void setup() throws IOException {&lt;br /&gt;
        Utilities.forTesting = true;&lt;br /&gt;
        backEnd = new BackEnd();&lt;br /&gt;
        String testProperties=&amp;quot;Assignment  : CS 260, Fall 2019, Lab Test\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;@. (15 points)\n&amp;quot;+&lt;br /&gt;
                &amp;quot;SELECT CustID, Fname, Lname, AccClosedDate\n&amp;quot;+&lt;br /&gt;
                &amp;quot;FROM Customer C\n&amp;quot;+&lt;br /&gt;
                &amp;quot;JOIN Account A ON A.Customer = C.CustID\n&amp;quot;+&lt;br /&gt;
                &amp;quot;WHERE AccStatus = 'Closed'\n&amp;quot;+&lt;br /&gt;
                &amp;quot;AND AccOpenLocation = 'Central'\n&amp;quot;+&lt;br /&gt;
                &amp;quot;AND AccClosedDate &amp;gt;= '2017-03-01'\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        String testQuestions = &amp;quot;CS 260, Fall 2019, Lab Test\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;1. (15 points)\n&amp;quot; +&lt;br /&gt;
                &amp;quot;SELECT CustID, Fname, Lname, AccClosedDate\n&amp;quot; +&lt;br /&gt;
                &amp;quot;FROM Customer C\n&amp;quot; +&lt;br /&gt;
                &amp;quot;JOIN Account A ON A.Customer = C.CustID\n&amp;quot; +&lt;br /&gt;
                &amp;quot;WHERE AccStatus = 'Closed'\n&amp;quot; +&lt;br /&gt;
                &amp;quot;AND AccOpenLocation = 'Central' \n&amp;quot; +&lt;br /&gt;
                &amp;quot;AND AccClosedDate &amp;gt;= '2017-03-01';\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondCompiles 10 \&amp;quot;\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondBasicContent 15 \&amp;quot;\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestRowCount 10\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestColumnCount 10\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondTableCount 10 \&amp;quot; == 2\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondWhereCount 10 \&amp;quot; &amp;gt;= 1\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestResultSetEqualContent 35\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;2-1. (16 points) \n&amp;quot; +&lt;br /&gt;
                &amp;quot;SELECT AccOpenLocation, AccStatus, COUNT(*) AS \&amp;quot;Location/Status Ct.\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;FROM Account\n&amp;quot; +&lt;br /&gt;
                &amp;quot;GROUP BY AccOpenLocation, AccStatus\n&amp;quot; +&lt;br /&gt;
                &amp;quot;ORDER BY AccOpenLocation, AccStatus;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondCompiles 15 \&amp;quot;\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondBasicContent 10 \&amp;quot;\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondGroupByCount 10 \&amp;quot; &amp;gt;= 1\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondOrderByCount 10 \&amp;quot; &amp;gt;= 1\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestColumnCount 10\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestResultSetEqualContent 45&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        BufferedWriter writer;&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
            // creating file to test regular expression of questions and assignment name&lt;br /&gt;
            writer = new BufferedWriter(new FileWriter(&amp;quot;TestAssignmentProperties.txt&amp;quot;));&lt;br /&gt;
            writer.write(testProperties);&lt;br /&gt;
            writer.close();&lt;br /&gt;
&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
          // creating file to test correct question count and question points of each question.&lt;br /&gt;
          writer = new BufferedWriter(new FileWriter(&amp;quot;TestAssignmentQuestions.txt&amp;quot;));&lt;br /&gt;
          writer.write(testQuestions);&lt;br /&gt;
          writer.close();&lt;br /&gt;
&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
          e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void testAssign() {&lt;br /&gt;
        try {&lt;br /&gt;
            // To check whether regular expression for question number is working or not.&lt;br /&gt;
            Assignment a = backEnd.createAssignment( mainFolderPath+ &amp;quot;/TestAssignmentProperties.txt&amp;quot;);&lt;br /&gt;
            assertEquals(0,a.getQuestions().size());&lt;br /&gt;
&lt;br /&gt;
            // To check whether Assignment name is correctly set or not.&lt;br /&gt;
            assertEquals(&amp;quot;Assignment  : CS 260, Fall 2019, Lab Test&amp;quot;,a.getAssignmentName());&lt;br /&gt;
&lt;br /&gt;
            // To check each question with correct format is correctly captured and total number of questions are correctly updated or not.&lt;br /&gt;
            Assignment b = backEnd.createAssignment( mainFolderPath+ &amp;quot;/TestAssignmentQuestions.txt&amp;quot;);&lt;br /&gt;
            assertEquals(2,b.getQuestions().size());&lt;br /&gt;
&lt;br /&gt;
            // To check if the question points of each question is correctly captured or not.&lt;br /&gt;
            assertEquals(15,b.getQuestions().get(0).getQuestionPoints());&lt;br /&gt;
            assertEquals(16,b.getQuestions().get(1).getQuestionPoints());&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        catch (Exception e) {&lt;br /&gt;
            System.out.println(e);&lt;br /&gt;
            fail();&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @After&lt;br /&gt;
    public void teardown () {&lt;br /&gt;
        File file = new File(mainFolderPath + &amp;quot;/TestAssignmentProperties.txt&amp;quot;);&lt;br /&gt;
        file.delete();&lt;br /&gt;
&lt;br /&gt;
        file = new File(mainFolderPath + &amp;quot;/TestAssignmentQuestions.txt&amp;quot;);&lt;br /&gt;
        file.delete();&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145472</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145472"/>
		<updated>2022-04-27T04:55:12Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Assignment.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file. Below are the changes made to the respective files.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package sqlfe.junit;&lt;br /&gt;
&lt;br /&gt;
import org.junit.After;&lt;br /&gt;
import org.junit.Before;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import sqlfe.general.Assignment;&lt;br /&gt;
import sqlfe.general.BackEnd;&lt;br /&gt;
import sqlfe.util.Utilities;&lt;br /&gt;
&lt;br /&gt;
import java.io.*;&lt;br /&gt;
&lt;br /&gt;
import static org.junit.Assert.assertEquals;&lt;br /&gt;
import static org.junit.Assert.fail;&lt;br /&gt;
&lt;br /&gt;
public class AssignmentTests extends AbstractTest {&lt;br /&gt;
&lt;br /&gt;
    private  BackEnd backEnd ;&lt;br /&gt;
&lt;br /&gt;
    @Before&lt;br /&gt;
    public void setup() throws IOException {&lt;br /&gt;
        Utilities.forTesting = true;&lt;br /&gt;
        backEnd = new BackEnd();&lt;br /&gt;
        String testProperties=&amp;quot;Assignment  : CS 260, Fall 2019, Lab Test\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;@. (15 points)\n&amp;quot;+&lt;br /&gt;
                &amp;quot;SELECT CustID, Fname, Lname, AccClosedDate\n&amp;quot;+&lt;br /&gt;
                &amp;quot;FROM Customer C\n&amp;quot;+&lt;br /&gt;
                &amp;quot;JOIN Account A ON A.Customer = C.CustID\n&amp;quot;+&lt;br /&gt;
                &amp;quot;WHERE AccStatus = 'Closed'\n&amp;quot;+&lt;br /&gt;
                &amp;quot;AND AccOpenLocation = 'Central'\n&amp;quot;+&lt;br /&gt;
                &amp;quot;AND AccClosedDate &amp;gt;= '2017-03-01'\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        String testQuestions = &amp;quot;CS 260, Fall 2019, Lab Test\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;1. (15 points)\n&amp;quot; +&lt;br /&gt;
                &amp;quot;SELECT CustID, Fname, Lname, AccClosedDate\n&amp;quot; +&lt;br /&gt;
                &amp;quot;FROM Customer C\n&amp;quot; +&lt;br /&gt;
                &amp;quot;JOIN Account A ON A.Customer = C.CustID\n&amp;quot; +&lt;br /&gt;
                &amp;quot;WHERE AccStatus = 'Closed'\n&amp;quot; +&lt;br /&gt;
                &amp;quot;AND AccOpenLocation = 'Central' \n&amp;quot; +&lt;br /&gt;
                &amp;quot;AND AccClosedDate &amp;gt;= '2017-03-01';\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondCompiles 10 \&amp;quot;\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondBasicContent 15 \&amp;quot;\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestRowCount 10\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestColumnCount 10\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondTableCount 10 \&amp;quot; == 2\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondWhereCount 10 \&amp;quot; &amp;gt;= 1\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestResultSetEqualContent 35\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;2-1. (16 points) \n&amp;quot; +&lt;br /&gt;
                &amp;quot;SELECT AccOpenLocation, AccStatus, COUNT(*) AS \&amp;quot;Location/Status Ct.\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;FROM Account\n&amp;quot; +&lt;br /&gt;
                &amp;quot;GROUP BY AccOpenLocation, AccStatus\n&amp;quot; +&lt;br /&gt;
                &amp;quot;ORDER BY AccOpenLocation, AccStatus;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondCompiles 15 \&amp;quot;\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondBasicContent 10 \&amp;quot;\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondGroupByCount 10 \&amp;quot; &amp;gt;= 1\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;CondOrderByCount 10 \&amp;quot; &amp;gt;= 1\&amp;quot;\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestColumnCount 10\n&amp;quot; +&lt;br /&gt;
                &amp;quot;TestResultSetEqualContent 45&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        BufferedWriter writer;&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
            // creating file to test regular expression of questions and assignment name&lt;br /&gt;
            writer = new BufferedWriter(new FileWriter(&amp;quot;TestAssignmentProperties.txt&amp;quot;));&lt;br /&gt;
            writer.write(testProperties);&lt;br /&gt;
            writer.close();&lt;br /&gt;
&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
          // creating file to test correct question count and question points of each question.&lt;br /&gt;
          writer = new BufferedWriter(new FileWriter(&amp;quot;TestAssignmentQuestions.txt&amp;quot;));&lt;br /&gt;
          writer.write(testQuestions);&lt;br /&gt;
          writer.close();&lt;br /&gt;
&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
          e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void testAssign() {&lt;br /&gt;
        try {&lt;br /&gt;
            // To check whether regular expression for question number is working or not.&lt;br /&gt;
            Assignment a = backEnd.createAssignment( mainFolderPath+ &amp;quot;/TestAssignmentProperties.txt&amp;quot;);&lt;br /&gt;
            assertEquals(0,a.getQuestions().size());&lt;br /&gt;
&lt;br /&gt;
            // To check whether Assignment name is correctly set or not.&lt;br /&gt;
            assertEquals(&amp;quot;Assignment  : CS 260, Fall 2019, Lab Test&amp;quot;,a.getAssignmentName());&lt;br /&gt;
&lt;br /&gt;
            // To check each question with correct format is correctly captured and total number of questions are correctly updated or not.&lt;br /&gt;
            Assignment b = backEnd.createAssignment( mainFolderPath+ &amp;quot;/TestAssignmentQuestions.txt&amp;quot;);&lt;br /&gt;
            assertEquals(2,b.getQuestions().size());&lt;br /&gt;
&lt;br /&gt;
            // To check if the question points of each question is correctly captured or not.&lt;br /&gt;
            assertEquals(15,b.getQuestions().get(0).getQuestionPoints());&lt;br /&gt;
            assertEquals(16,b.getQuestions().get(1).getQuestionPoints());&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        catch (Exception e) {&lt;br /&gt;
            System.out.println(e);&lt;br /&gt;
            fail();&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @After&lt;br /&gt;
    public void teardown () {&lt;br /&gt;
        File file = new File(mainFolderPath + &amp;quot;/TestAssignmentProperties.txt&amp;quot;);&lt;br /&gt;
        file.delete();&lt;br /&gt;
&lt;br /&gt;
        file = new File(mainFolderPath + &amp;quot;/TestAssignmentQuestions.txt&amp;quot;);&lt;br /&gt;
        file.delete();&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145471</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145471"/>
		<updated>2022-04-27T04:52:34Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Assignment.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file. Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145470</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145470"/>
		<updated>2022-04-27T04:49:11Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Output */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:Submissions.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Submissions.png&amp;diff=145469</id>
		<title>File:Submissions.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Submissions.png&amp;diff=145469"/>
		<updated>2022-04-27T04:48:08Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145468</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145468"/>
		<updated>2022-04-27T04:46:37Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Output */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
'''Submissions.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145467</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145467"/>
		<updated>2022-04-27T04:45:36Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Output */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145466</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145466"/>
		<updated>2022-04-27T04:45:05Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Output */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
'''BackEnd.java'''&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145465</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145465"/>
		<updated>2022-04-27T04:44:08Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Output */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
[[File:backend.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend.png&amp;diff=145464</id>
		<title>File:Backend.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend.png&amp;diff=145464"/>
		<updated>2022-04-27T04:39:41Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: Ssingh54 uploaded a new version of File:Backend.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend.png&amp;diff=145463</id>
		<title>File:Backend.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend.png&amp;diff=145463"/>
		<updated>2022-04-27T04:36:31Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: Ssingh54 uploaded a new version of File:Backend.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend.png&amp;diff=145462</id>
		<title>File:Backend.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend.png&amp;diff=145462"/>
		<updated>2022-04-27T04:35:29Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145461</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145461"/>
		<updated>2022-04-27T04:32:13Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Output */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the Submissions.java and BackEnd.java file.&lt;br /&gt;
Below are the changes made to the respective files.&lt;br /&gt;
&lt;br /&gt;
==BackEnd.java==&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145460</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=145460"/>
		<updated>2022-04-27T04:22:07Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Proposed Output */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
For incorporating the proposed changes we updated the&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist.&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Currently, the project does not contain any automated build functionality. We plan to create a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
Any errors like use of wrong database credentials etc. are currently shown in the GUI for SQLFE. We plan to remove system errors visible to user via GUI to a file in /evaluations folder and hide them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
===Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Task 1 ==== &lt;br /&gt;
* Copy the current output file to a directory outside the project scope.&lt;br /&gt;
* Run the project generating the new output file.&lt;br /&gt;
* The generated output file should be formatted in the same manner as shown in the image above.&lt;br /&gt;
&lt;br /&gt;
==== Task 3 ==== &lt;br /&gt;
* Trigger the maven build using: mvn clean install&lt;br /&gt;
* Check for the existence of a new jar SQLFE.jar is generated in the project's root directory.&lt;br /&gt;
&lt;br /&gt;
==== Task 4 ==== &lt;br /&gt;
* Navigate to the project's GitHub page. Go to the Github actions page.&lt;br /&gt;
* Enter your email in the prompt.&lt;br /&gt;
* Choose a branch and trigger a build using Github actions.&lt;br /&gt;
* Check your mailbox for an automated mail containing a jar/.exe file.&lt;br /&gt;
&lt;br /&gt;
==== Task 5 ==== &lt;br /&gt;
* Launch the project.&lt;br /&gt;
* Enter the wrong name for the database.&lt;br /&gt;
* Try to run an evaluation.&lt;br /&gt;
* The project will generate a new file in the evaluation folder containing the error. Check this file for appropriate messages and accurate format.&lt;br /&gt;
&lt;br /&gt;
==Github and Related Link==&lt;br /&gt;
The forked git repository for this project can be found [https://github.com/Sakshamrzt/SQL-File-Evaluation].&amp;lt;br&amp;gt;&lt;br /&gt;
The pull request can be found [https://github.com/wagnerpj42/SQL-File-Evaluation/pull/39].&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The requirement &amp;quot;Ensure that all file (of SQL queries) parsing errors are logged in the /evaluations/AAA_parse_problems file (this was broken by a previous contributor)&amp;quot; has been removed from the scope of the project.&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=144799</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=144799"/>
		<updated>2022-04-12T01:07:55Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Task 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Check the submission marks and submissions from the returned value of the result from hashcode method and test if they have the respective correct values.&lt;br /&gt;
* Check the behavior of the equals method if it correctly checks the 3 categories of inputs: object, submissionMarks, and submissions.&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Create a mini submission and check &lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist?&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
==== Current Implementation ====&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Creating a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
Removing system errors visible to user via GUI to a file in /evaluations folder and hiding them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=144798</id>
		<title>CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_S2201:_Improving_User_Experience_for_SQLFE&amp;diff=144798"/>
		<updated>2022-04-12T01:06:11Z</updated>

		<summary type="html">&lt;p&gt;Ssingh54: /* Task 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About SQLFE==&lt;br /&gt;
&lt;br /&gt;
SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by [https://www.uwec.edu/profiles/wagnerpj/ Prof. Paul Wagner] at [https://www.uwec.edu/ University Of Wisconsin Eau Claire]. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions.  Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes. As most of the task here are refactoring output files and moving the project to a different build, we don't have any design pattern refactoring.&lt;br /&gt;
&lt;br /&gt;
===Task 1===&lt;br /&gt;
Improve the formatting of the query and feedback output in each individual evaluation output file. &lt;br /&gt;
&lt;br /&gt;
====Current Implementation====&lt;br /&gt;
The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_1.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.]]&lt;br /&gt;
&lt;br /&gt;
====Proposed Output====&lt;br /&gt;
For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_2.png|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; File is formatted properly. Additionally, undesired characters have been removed.]]&lt;br /&gt;
&lt;br /&gt;
Similar changes will be done for each student's output file.&lt;br /&gt;
&lt;br /&gt;
===Task 2===&lt;br /&gt;
Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.&lt;br /&gt;
&lt;br /&gt;
Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:&lt;br /&gt;
&lt;br /&gt;
=====Assignment.java=====&lt;br /&gt;
*Check the regular expression for the question with an unacceptable format like a 1, %1, and $2.&lt;br /&gt;
*Check the question without the period(.) in the question name.&lt;br /&gt;
*Check whether the name of propertiesFilename is valid or not. If the file is invalid it should throw the appropriate exception.&lt;br /&gt;
*Check if the final output i.e. the questions is correct. For this we will check the following two values:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;1. The number of questions is the same.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;2. The points for each question are the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====TestResult.java=====&lt;br /&gt;
* Add a warning and check the expected value in the containsWarning function.&lt;br /&gt;
* Set the test score and check its expected value in the getScore function.&lt;br /&gt;
* Check the TestResult function with parameters and check the expected value of the parameters (score, warning, extraRows, missingRows)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====FrontEnd.java=====&lt;br /&gt;
* Write Frontend information out to the properties file and check the value with set values(in the test case) &lt;br /&gt;
* Check to set the input parameters with a different datatype.&lt;br /&gt;
* Appropriate action should be taken if the file does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SubmissionCollection.java=====&lt;br /&gt;
* Check the submission marks and submissions from the returned value of the result from hashcode method and test if they have the respective correct values.&lt;br /&gt;
* Check the behavior of the equals method if it correctly checks the 3 categories of inputs: object, submissionMarks, and submissions.&lt;br /&gt;
* Parsewriter and Commwriter files exist after the function is called.&lt;br /&gt;
* Create a mini submission and check &lt;br /&gt;
* Check if the number of submissions is the same as expected - totalSubmissions is the same as filecount&lt;br /&gt;
* Check whether the submission file name is the same as expected.&lt;br /&gt;
* Appropriate action should be taken if the submission folder path does not exist?&lt;br /&gt;
&lt;br /&gt;
===Task 3===&lt;br /&gt;
Current Implementation&lt;br /&gt;
&lt;br /&gt;
Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool. &lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:&lt;br /&gt;
&lt;br /&gt;
* Development -  This profile will be used when a developer is developing or making changes to the application.&lt;br /&gt;
* Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.&lt;br /&gt;
* Deployment - This profile goes hand in hand with the automated builds on Github Actions. The configuration specified here is used when building the application using the CI build.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:s_2201_5.png|800px|thumb|center| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Different profiles in maven. &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Maven build life cycle. ]]&lt;br /&gt;
&lt;br /&gt;
Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.&lt;br /&gt;
&lt;br /&gt;
===Task 4===&lt;br /&gt;
Creating a CI/CD pipeline for continuous build functionality which will generate an executable, compile all the JUnit test cases as well as, integrates supported databases.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We are thinking of using GitHub Actions for this, as they make it very easy to implement and automate workflows as per our requirement. Our workflow will do the following:&lt;br /&gt;
* Action will trigger whenever we make a commit or a pull request to the main/master branch.&lt;br /&gt;
* The action will compile the project using 'maven build' command and store the output jar inside project folder.&lt;br /&gt;
* We will use another action to email that jar to all the respective stakeholders (alternate solution could be to make it publicly accessible using GitHub pages).&lt;br /&gt;
* In case of a pull request, we will create a testing build so that it doesn't break any functionality and the stable build is accessible to those who want that.&lt;br /&gt;
&lt;br /&gt;
[[File:build.jpeg|800px|thumb|center|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; CI/CD pipeline]]&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
Removing system errors visible to user via GUI to a file in /evaluations folder and hiding them from the user.&lt;br /&gt;
&lt;br /&gt;
==== Proposed Solution ====&lt;br /&gt;
We plan to create a new file `AAA_system_error.out` which will contain all the system errors/exceptions noticed by the application and remove all the code which was publishing that data to the GUI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following JUnit test:&lt;br /&gt;
* Create the wrong DAO object and check if a file with the relevant message is created correspondingly.&lt;br /&gt;
&lt;br /&gt;
The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Jackson Hardy(jmhardy3)&amp;lt;br&amp;gt;&lt;br /&gt;
Rachit Sharma(rsharm26) &amp;lt;br&amp;gt;&lt;br /&gt;
Saksham Thakur(sthakur5) &amp;lt;br&amp;gt;&lt;br /&gt;
Shubhender Singh(ssingh54) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Dr. Paul Wagner&lt;/div&gt;</summary>
		<author><name>Ssingh54</name></author>
	</entry>
</feed>