Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
courses:cs335:spring2019:graffiti:documentation [2019/05/15 18:40] โ created estradahammd | courses:cs335:spring2019:graffiti:documentation [2019/05/17 16:30] (current) โ wenz | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Documentation ====== | ====== Documentation ====== | ||
- | The documentation for the index page can currently | + | Our full documentation can be found in our files and at this [[https:// |
+ | ==== Development Tips ==== | ||
+ | |||
+ | Welcome to the Ancient Graffiti Project! As you may have noticed this project is massive and can be a little intimidating at first, we ran into this problem as well and created this guide to help you out. While we try to give a good overview of the whole project, we're still discovering new things so feel free to correct and/or augment this guide with your knowledge. Best of luck | ||
+ | |||
+ | ==== How the databases work ==== | ||
+ | |||
+ | The databases are postgresql, to get easy access to them just ssh into fred and then navigate to whatever version of the database Sprenkle gave you access to. For a full list of databases go into [[https:// | ||
+ | |||
+ | === Setup === | ||
+ | |||
+ | The setup process is fairly simple, in the setup folder the populate database class runs and calls a set of functions that populate the databases either directly by pulling data from csv files or indirectly by pulling data from other databases. **Note that populate database does not run on the startup so you'll have to call any setup functions manually | ||
+ | |||
+ | === Beans! === | ||
+ | |||
+ | Beans are java objects that encapsulate data taken from the database. In this project, beans are used to provide quick, easy, and controlled access to data pulled from a database. They tend to not do a lot of processing and really are just used for access. | ||
+ | |||
+ | === Rowmappers and DAOs === | ||
+ | |||
+ | Beans are generated by rowmappers. Rowmappers take the results from postgresql queries and turn them into beans using the constructor interface specified. Different beans are generally used for different queries and provide different interfaces. Rowmappers don't have to return beans though and can in fact just be used to map specific datatypes. | ||
+ | |||
+ | DAOs (data access objects) store and execute postgresql queries and handle all the errors that can come from such requests. | ||
+ | |||
+ | ==== How the web pages work ==== | ||
+ | |||
+ | Web pages are all stored in the WEB-INF folder and are all jsp files. It is common to break up a page into a series of imports such that the page itself | ||
+ | |||
+ | === Accessing a jsp in WEB-INF === | ||
+ | |||
+ | Jsp sites are accessed through controllers. For each site that can be accessed their is an associated mapping in a controller that runs a function when the associated url is executed. These can be very short and just return the page or they can contain a lot of processing and data storage for the resulting web page. | ||
+ | |||
+ | === Search === | ||
+ | |||
+ | Search and pages that depend on special characters pass their values as arguments in the url rather than as elements of the url itself. This handles a whole host of errors and when used with UTF-8 encoding and the spring filter system protects against xss attacks. | ||
+ | |||
+ | ==== How the index page works ==== | ||
+ | |||
+ | When a user tries to access the term index page an associated term index function in the graffiti controller pulls the list of unique terms and generates a list. This list is then sorted using the Greek sorting system to account for special characters and greek. For each item in this list the associated data for each term is called and passed to the jsp. The data needed is generated by the [[https:// | ||
+ | |||
+ | The term index list does not display terms that have been blacklisted by an admin and furthermore will eventually be sorted by data on the type of index when such data is added. This will require some sort of interaction with the epidocs. | ||
+ | |||
+ | The data all comes from the graffiti_index table. This table is generated by the [[https:// | ||
+ | |||
+ | ==== Map Display in the Search Results ==== | ||
+ | |||
+ | Prior to our work on this project, both the maps for Herculaneum and Pompeii would be displayed for all search results. | ||
+ | |||
+ | ==== Updates to the Header / Navigation Bar ==== | ||
+ | |||
+ | Previously, the header bar would collapse after the shrinking window size had already forced the search bar onto its own line. This was not aesthetically pleasing, and was a bug that needed to be addressed. | ||
+ | ==== Loading Data into the Database Through EpiDocs ==== | ||
+ | |||
+ | Loading the data representing the Smyrna graffiti is as easy as clicking a button. | ||
+ | |||
+ | ==== Updages to the Admin Tools: Ignore List Function ==== | ||
+ | |||
+ | The Ignore List Function (previously refered to as the "black list") has been fully implemented under the Admin Tools tab. In order to access this function, the user will need to first authenticate through the admin login page. The final use case is where the user is able to choose what items can be displayed in the index by simplying selecting items from the Ignore List page and perform corresponding actions. The page layouts shows three boxs (from left to right): items that should be displayed, items that are displayed but still require further review, and items that should be ignore and not displayed. User can move items between tables easily using the buttons implemented. There is also a search bar on top of each table that allow users to access items more easily. | ||
+ | |||
+ | In order to load up the funciton, simply run modifyIgnoreList.jsp on the server. In order to check the database, use Professor Sprenkle' |