package Ġau . net . dr mic . photos . photo processing . service čĊč Ċ import Ġau . net . dr mic . photos . photo processing . repository . Tag Repository č Ċ import Ġau . net . dr mic . photos . photo processing . repository . entity . Photos č Ċ import Ġau . net . dr mic . photos . photo processing . repository . entity . Photos Tag č Ċ import Ġau . net . dr mic . photos . photo processing . repository . entity . Tag č Ċ import Ġorg . slf 4 j . Logger č Ċ import Ġorg . springframework . beans . factory . annotation . Autowired č Ċ import Ġorg . springframework . stereotype . Service č Ċ import Ġjava . sql . Timestamp č Ċ import Ġjava . time . LocalDateTime č Ċ import Ġjava . time . Local Time č Ċ import Ġjava . util .* čĊč Ċ @ Service č Ċ class ĠTag Service Ġ{ čĊčĊĠĠĠ Ġ@ Autowired čĊĠĠĠ Ġlateinit Ġvar Ġtag Repository : ĠTag Repository čĊčĊĠĠĠ Ġ@ Autowired čĊĠĠĠ Ġlateinit Ġvar Ġphotos Tag Service : ĠPh otos Tag Service čĊčĊĠĠĠ Ġ@ Autowired čĊĠĠĠ Ġlateinit Ġvar Ġlogger : ĠLogger čĊčĊĠĠĠ Ġfun Ġsave Tags ( owner UserId : ĠLong , Ġtags : ĠList < String >, Ġphotos : ĠPh otos ): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġtags Added Count Ġ= Ġ 0 čĊčĊĠĠĠĠĠĠĠ Ġtags . forEach Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrimmed Tag UpperCase Ġ= Ġit . toUpperCase (). trim () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Tag Pre Existing Ġ= Ġcheck If Tag Exists For Owner User ( owner UserId , Ġtrimmed Tag UpperCase ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġ! Ġis Tag Pre Existing Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimestamp Now Ġ= ĠTimestamp ( Date (). time ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Now Ġ= ĠLocalDateTime . now () čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= ĠTag () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag . owner UserId Ġ= Ġowner UserId čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag . tag Word Ġ= Ġtrimmed Tag UpperCase čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag . dateTime Created Ġ= Ġtime Now čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag . dateTime Updated Ġ= Ġtime Now čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Repository . save ( tag ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġjoin Ġassociation Ġtable Ġrecord Ġin Ġphotos _ tag Ġbetween Ġphotos Ġand Ġtag Ġrecord čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphotos Tag Ġ= ĠPh otos Tag () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphotos Tag . photo Ġ= Ġphotos čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphotos Tag . tag Ġ= Ġtag čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphotos Tag . dateTime Created Ġ= Ġtime Now čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphotos Tag . dateTime Updated Ġ= Ġtime Now čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphotos Tag Service . save ( photos Tag ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags Added Count ++ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġtags Added Count čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġcheck If Tag Exists For Owner User ( owner UserId : ĠLong , Ġtag Word : ĠString ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtrimmed Tag UpperCase Ġ= Ġtag Word . toUpperCase (). trim () čĊčĊĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġtag Repository . findFirst By Owner UserId And Tag Word ( owner UserId , Ġtrimmed Tag UpperCase ) čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġtag . isPresent čĊĠĠĠ Ġ} čĊč Ċ } čĊ