From f8b38bae8fd22d1d2be6719da7d109d7c72b3bbc Mon Sep 17 00:00:00 2001 From: Yuri Tatishchev Date: Mon, 24 Mar 2025 23:28:39 -0700 Subject: [PATCH] hw3: convert class members to final where possible, make Photo a record class --- hw3/src/controller/PhotoAlbumController.java | 6 ++- hw3/src/iterator/PhotoIterator.java | 2 +- hw3/src/model/Photo.java | 45 +------------------- hw3/src/model/PhotoAlbumModel.java | 8 ++-- hw3/src/strategy/SortByDate.java | 2 +- hw3/src/strategy/SortByName.java | 2 +- hw3/src/strategy/SortBySize.java | 2 +- hw3/src/view/PhotoAlbumView.java | 6 +-- 8 files changed, 15 insertions(+), 58 deletions(-) diff --git a/hw3/src/controller/PhotoAlbumController.java b/hw3/src/controller/PhotoAlbumController.java index e8963b2..7841125 100644 --- a/hw3/src/controller/PhotoAlbumController.java +++ b/hw3/src/controller/PhotoAlbumController.java @@ -1,5 +1,7 @@ package controller; +import iterator.AlbumIterator; +import iterator.PhotoIterator; import model.Photo; import model.PhotoAlbumModel; import strategy.SortByDate; @@ -14,8 +16,8 @@ import java.util.Date; import java.util.List; public class PhotoAlbumController { - private PhotoAlbumModel model; - private PhotoAlbumView view; + private final PhotoAlbumModel model; + private final PhotoAlbumView view; public PhotoAlbumController(PhotoAlbumModel model, PhotoAlbumView view) { this.model = model; diff --git a/hw3/src/iterator/PhotoIterator.java b/hw3/src/iterator/PhotoIterator.java index 5593e8a..a9e7b8f 100644 --- a/hw3/src/iterator/PhotoIterator.java +++ b/hw3/src/iterator/PhotoIterator.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.NoSuchElementException; public class PhotoIterator implements AlbumIterator { - private List photos; + private final List photos; private int currentPosition; public PhotoIterator(List photos) { diff --git a/hw3/src/model/Photo.java b/hw3/src/model/Photo.java index d0727f0..d1d7c3b 100644 --- a/hw3/src/model/Photo.java +++ b/hw3/src/model/Photo.java @@ -2,48 +2,5 @@ package model; import java.util.Date; -public class Photo { - private String name; - private String filePath; - private Date dateAdded; - private long fileSize; - - public Photo(String name, String filePath, Date dateAdded, long fileSize) { - this.name = name; - this.filePath = filePath; - this.dateAdded = dateAdded; - this.fileSize = fileSize; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getFilePath() { - return filePath; - } - - public void setFilePath(String filePath) { - this.filePath = filePath; - } - - public Date getDateAdded() { - return dateAdded; - } - - public void setDateAdded(Date dateAdded) { - this.dateAdded = dateAdded; - } - - public long getFileSize() { - return fileSize; - } - - public void setFileSize(long fileSize) { - this.fileSize = fileSize; - } +public record Photo(String name, String filePath, Date dateAdded, long fileSize) { } diff --git a/hw3/src/model/PhotoAlbumModel.java b/hw3/src/model/PhotoAlbumModel.java index 147adfb..c2fc6ea 100644 --- a/hw3/src/model/PhotoAlbumModel.java +++ b/hw3/src/model/PhotoAlbumModel.java @@ -7,7 +7,7 @@ import java.util.*; public class PhotoAlbumModel { private List photos; private SortingStrategy sortingStrategy; - private List listeners; + private final List listeners; private Photo currentPhoto; public interface ModelChangeListener { @@ -29,9 +29,9 @@ public class PhotoAlbumModel { } public void deletePhoto(String name) { - photos.removeIf(photo -> photo.getName().equals(name)); - if (currentPhoto != null && currentPhoto.getName().equals(name)) { - currentPhoto = photos.isEmpty() ? null : photos.get(0); + photos.removeIf(photo -> photo.name().equals(name)); + if (currentPhoto != null && currentPhoto.name().equals(name)) { + currentPhoto = photos.isEmpty() ? null : photos.getFirst(); } notifyListeners(); } diff --git a/hw3/src/strategy/SortByDate.java b/hw3/src/strategy/SortByDate.java index 053786c..0a67528 100644 --- a/hw3/src/strategy/SortByDate.java +++ b/hw3/src/strategy/SortByDate.java @@ -8,7 +8,7 @@ import java.util.List; public class SortByDate implements SortingStrategy { @Override public List sort(List photos) { - photos.sort(Comparator.comparing(Photo::getDateAdded)); + photos.sort(Comparator.comparing(Photo::dateAdded)); return photos; } } diff --git a/hw3/src/strategy/SortByName.java b/hw3/src/strategy/SortByName.java index 3b8d23c..15b1ad4 100644 --- a/hw3/src/strategy/SortByName.java +++ b/hw3/src/strategy/SortByName.java @@ -8,7 +8,7 @@ import java.util.List; public class SortByName implements SortingStrategy { @Override public List sort(List photos) { - photos.sort(Comparator.comparing(Photo::getName)); + photos.sort(Comparator.comparing(Photo::name)); return photos; } } diff --git a/hw3/src/strategy/SortBySize.java b/hw3/src/strategy/SortBySize.java index 69822ca..8d3067f 100644 --- a/hw3/src/strategy/SortBySize.java +++ b/hw3/src/strategy/SortBySize.java @@ -8,7 +8,7 @@ import java.util.List; public class SortBySize implements SortingStrategy { @Override public List sort(List photos) { - photos.sort(Comparator.comparing(Photo::getFileSize)); + photos.sort(Comparator.comparing(Photo::fileSize)); return photos; } } diff --git a/hw3/src/view/PhotoAlbumView.java b/hw3/src/view/PhotoAlbumView.java index dd25592..203f1de 100644 --- a/hw3/src/view/PhotoAlbumView.java +++ b/hw3/src/view/PhotoAlbumView.java @@ -9,7 +9,6 @@ import java.awt.*; import java.util.List; public class PhotoAlbumView extends JFrame implements PhotoAlbumModel.ModelChangeListener { - private PhotoAlbumController controller; private PhotoAlbumModel model; private JList photoList; @@ -68,7 +67,6 @@ public class PhotoAlbumView extends JFrame implements PhotoAlbumModel.ModelChang } public void setController(PhotoAlbumController controller) { - this.controller = controller; this.model = controller.getModel(); model.addListener(this); @@ -97,14 +95,14 @@ public class PhotoAlbumView extends JFrame implements PhotoAlbumModel.ModelChang listModel.clear(); List photos = model.getPhotos(); for (Photo photo : photos) { - listModel.addElement(photo.getName()); + listModel.addElement(photo.name()); } } private void updateCurrentPhoto() { Photo current = model.getCurrentPhoto(); if (current != null) { - ImageIcon icon = loadImage(current.getFilePath()); + ImageIcon icon = loadImage(current.filePath()); if (icon != null) { currentPhotoLabel.setIcon(icon); currentPhotoLabel.setText("");