Vorbereitung Release 0.2.0 #83
@@ -21,7 +21,6 @@ import java.time.YearMonth;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@ToString
|
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Entity
|
@Entity
|
||||||
public class Issue extends AbstractEntity {
|
public class Issue extends AbstractEntity {
|
||||||
@@ -69,4 +68,28 @@ public class Issue extends AbstractEntity {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
result.append("Issue{");
|
||||||
|
result.append("comic=");
|
||||||
|
result.append(comic);
|
||||||
|
result.append(", volume=");
|
||||||
|
result.append(volume);
|
||||||
|
result.append(", storyArc=");
|
||||||
|
result.append(storyArc);
|
||||||
|
result.append(", issueNumber='");
|
||||||
|
result.append(issueNumber);
|
||||||
|
result.append(", title='");
|
||||||
|
result.append(title);
|
||||||
|
result.append(", publishedOn=");
|
||||||
|
result.append(publishedOn);
|
||||||
|
result.append(", isRead=");
|
||||||
|
result.append(isRead);
|
||||||
|
result.append(", inStock=");
|
||||||
|
result.append(inStock);
|
||||||
|
result.append("}");
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import lombok.ToString;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@ToString
|
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Entity
|
@Entity
|
||||||
public class Volume extends AbstractEntity {
|
public class Volume extends AbstractEntity {
|
||||||
@@ -43,4 +42,15 @@ public class Volume extends AbstractEntity {
|
|||||||
@OneToMany(fetch = FetchType.EAGER, mappedBy = "volume", cascade = CascadeType.REMOVE, orphanRemoval = true)
|
@OneToMany(fetch = FetchType.EAGER, mappedBy = "volume", cascade = CascadeType.REMOVE, orphanRemoval = true)
|
||||||
@Nullable
|
@Nullable
|
||||||
private List<Issue> issues = new LinkedList<>();
|
private List<Issue> issues = new LinkedList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder result = new StringBuilder("Volume{");
|
||||||
|
result.append("name=");
|
||||||
|
result.append(name);
|
||||||
|
result.append("comic=Comic{title=");
|
||||||
|
result.append(comic.getTitle());
|
||||||
|
result.append("}}");
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import com.vaadin.flow.data.binder.Binder;
|
|||||||
import de.thpeetz.kontor.comics.data.Comic;
|
import de.thpeetz.kontor.comics.data.Comic;
|
||||||
import de.thpeetz.kontor.comics.data.Issue;
|
import de.thpeetz.kontor.comics.data.Issue;
|
||||||
import de.thpeetz.kontor.comics.data.Volume;
|
import de.thpeetz.kontor.comics.data.Volume;
|
||||||
import de.thpeetz.kontor.common.views.*;
|
import de.thpeetz.kontor.common.views.YearMonthField;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -38,12 +38,21 @@ public class IssueForm extends FormLayout {
|
|||||||
|
|
||||||
Binder<Issue> binder = new BeanValidationBinder<>(Issue.class);
|
Binder<Issue> binder = new BeanValidationBinder<>(Issue.class);
|
||||||
|
|
||||||
public IssueForm(List<Comic> comics) {
|
public IssueForm(List<Comic> comics, List<Volume> volumes) {
|
||||||
addClassName("issue-form");
|
addClassName("issue-form");
|
||||||
binder.bindInstanceFields(this);
|
binder.bindInstanceFields(this);
|
||||||
|
|
||||||
comic.setItems(comics);
|
comic.setItems(comics);
|
||||||
|
comic.addValueChangeListener(event -> {
|
||||||
|
if (event.getValue() != null) {
|
||||||
|
volume.setItems(event.getValue().getVolumes());
|
||||||
|
} else {
|
||||||
|
volume.clear();
|
||||||
|
}
|
||||||
|
});
|
||||||
comic.setItemLabelGenerator(Comic::getTitle);
|
comic.setItemLabelGenerator(Comic::getTitle);
|
||||||
|
volume.setItems(volumes);
|
||||||
|
volume.setItemLabelGenerator(Volume::getName);
|
||||||
add(comic, volume, issueNumber, title, publishedOn, isRead, inStock, createButtonsLayout());
|
add(comic, volume, issueNumber, title, publishedOn, isRead, inStock, createButtonsLayout());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,10 +79,20 @@ public class IssueForm extends FormLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setIssue(Issue issue) {
|
public void setIssue(Issue issue) {
|
||||||
binder.setBean(issue);
|
log.debug("IssueForm.setIssue: {}", issue);
|
||||||
|
Volume issueVolume = null;
|
||||||
if (issue != null) {
|
if (issue != null) {
|
||||||
|
issueVolume = issue.getVolume();
|
||||||
|
}
|
||||||
|
binder.setBean(issue);
|
||||||
|
if (issue != null && issue.getComic() != null) {
|
||||||
|
log.debug("populate list of volumes");
|
||||||
volume.setItems(issue.getComic().getVolumes());
|
volume.setItems(issue.getComic().getVolumes());
|
||||||
volume.setItemLabelGenerator(Volume::getName);
|
log.info("Issue.Volume= {}", issue.getVolume());
|
||||||
|
if (issueVolume != null) {
|
||||||
|
log.debug("Set volume {} for issue: {}", issueVolume, issue);
|
||||||
|
volume.setValue(issueVolume);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ public class IssueView extends VerticalLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void configureForm() {
|
private void configureForm() {
|
||||||
form = new IssueForm(service.findAllComics(null));
|
form = new IssueForm(service.findAllComics(null), service.findAllVolumes());
|
||||||
form.setWidth("25em");
|
form.setWidth("25em");
|
||||||
form.setVisible(false);
|
form.setVisible(false);
|
||||||
form.addSaveListener(this::saveIssue);
|
form.addSaveListener(this::saveIssue);
|
||||||
|
|||||||
Reference in New Issue
Block a user