@startuml

' style tweaks to make the diagram a little more readable
skinparam {
	Style strictuml
	RoundCorner 8

	Sequence {
		' make activations yellow too
		LifeLineBackgroundColor #FDFDCD

		' make stereotypes less ugly
		Stereotype {
			Font {
				Size 11
				Style plain
			}
		}
	}

	DatabaseBorderColor #A80036

}

title Search for Product by ProductID

actor User as user
participant "Administration" as main << main >>
participant "MainMenu" as menu << frame >>
participant "ProductReportDialog" as dialog << dialog >>
participant "ProductDatabaseDAO" as dao << ProductDAO >>
participant "SimpleListModel\n:model" as model
database "Database" as db

main++
create menu
main -> menu : « construct »


user ->> menu : clicks 'View Products'
menu++


create dialog
menu -> dialog++ : « construct »


create dao
dialog -> dao : « construct »

dialog -> dao++ : getProducts()
dao -> db++ : select * from product
return ResultSet
dao -> dao : reconstruct products\nfrom ResultSet
return products

create model
dialog -> model : « construct »
dialog -> model++ : updateItems(products)
model--
dialog -> dialog : listProducts.setModel(model)

note left : products now\nvisible to user

user ->> dialog :Select Category from combo box

dialog -> dialog : cmbFilter.getSelectedItem()
'if box for if value isn't valid?

dialog -> dao++ :filterCategories(category)
dao -> db++ :select * from product where category = category
return ResultSet
dao -> dao : reconstruct products\nfrom ResultSet
return products
db--
dao--

dialog -> model++ :updateItems(products)
model--
dialog -> dialog :listProducts.setModel(model)
note left : only products with\nchosen catgeory\ndisplayed in combo box


@enduml
