/cpsc-210-project

A film photo archive developed for the CPSC 210 Software Construction course project

Primary LanguageJava

Personal Project: Film Photography Archive

For film photographers who keep digital archives

I was inspired to create this application because film photography is a common hobby that me and my friends enjoy. One issue that we struggle with is the task of keeping the digital scans of our photos organized, accessible, and separate from other digital media.

Additionally, this app aims to provide film-specific tools to help streamline the processes of archiving and retrieving film photos, such as:

  • tagging/filtering photos by film type
  • tagging/sorting photos by manual exposure settings (ISO, shutter speed, aperture)
  • organizing photos into "rolls" to preserve the physical organizational structure of film rolls

User Stories

  • As a user, I want to be able to add a photo to my archive.
  • As a user, I want to be able to filter my photos when I access them.
  • As a user, I want to be able to add custom tags and descriptions to my photo entries.
  • As a user, I want to be able to organize my photo entries into "rolls" to represent the physical film rolls they were taken from.
  • As a user, I want to be able to have the option to save any changes to my photo archive before I exit the application.
  • As a user, I want to be able to automatically load my saved photo archive when I open the application.

Instructions for Grader

  • Before you can add a photo entry to your archive, you will first need to create a photo roll. Click the "Create Photo Roll" button on the left-hand menu and enter a name for your new photo roll.

  • Once you have created a roll, you can select by clicking on it. This will bring up the right-hand menu, allowing you the option to delete it or view its contents. To add a photo to your archive, select your roll, click, "View Photos", and click "Create New Photo Entry" (adding an X to a Y). This should bring up your file browser and allow you to select a photo from your computer.

  • You can now select your photo entry, which will again bring up a right-hand menu which gives you the options to edit its description, view the image (visual component of project), add tags, or delete the selected photo from your archive (removing an X from a Y).

  • You can add tags to your photo entries by clicking the "Create New Tag" and entering a string. You can add or remove as many tags as you want from any photo entry. If you create multiple photo entries that share common tags, you can select a tag and click the "Filter Photos By Selected Tag" button to view all photos in the roll that have the selected tag.

  • Upon closing the application by clicking the (x) in the top right corner, you will be prompted to save your work. If you choose "Yes", your archive will be saved to file and automatically loaded if you relaunch the program. Because the user is intended to have just one archive for all their photos, it is automatically loaded on startup without any input.

Phase 4: Task 2

The current implementation of the Reader class is robust: when the Reader attempts to read the state from the save file, it will throw an IOException if the read fails. This exception is tested in ReaderTest and gracefully caught in the UI calls.

Phase 4: Task 3

  • Refactored GUI into its own class to increase cohesion, as it didn't belong in the Main class
  • Moved save file location string into Reader class, as it makes much more sense for the Reader to keep track of the file's location rather than the UI keeping track of it.