2870 Allow supervisors to set national subject category
This commit is contained in:
parent
fabe1eff51
commit
c23981f510
core/src/main
java/se/su/dsv/scipro/grading
NationalSubjectCategoryRepository.javaNationalSubjectCategoryRepositoryImpl.javaNationalSubjectCategoryService.javaNationalSubjectCategoryServiceImpl.javaPublicationMetadata.java
resources/db/migration
view/src/main/java/se/su/dsv/scipro/grading
@ -1,9 +1,12 @@
|
||||
package se.su.dsv.scipro.grading;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface NationalSubjectCategoryRepository {
|
||||
void save(NationalSubjectCategory nationalSubjectCategory);
|
||||
|
||||
Optional<NationalSubjectCategory> findByExternalId(Integer externalId);
|
||||
|
||||
List<NationalSubjectCategory> findAll();
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import se.su.dsv.scipro.system.AbstractRepository;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class NationalSubjectCategoryRepositoryImpl
|
||||
@ -37,4 +38,11 @@ public class NationalSubjectCategoryRepositoryImpl
|
||||
.fetchOne();
|
||||
return Optional.ofNullable(nationalSubjectCategory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NationalSubjectCategory> findAll() {
|
||||
return from(QNationalSubjectCategory.nationalSubjectCategory)
|
||||
.select(QNationalSubjectCategory.nationalSubjectCategory)
|
||||
.fetch();
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,12 @@
|
||||
package se.su.dsv.scipro.grading;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface NationalSubjectCategoryService {
|
||||
Optional<NationalSubjectCategory> findByExternalId(Integer externalId);
|
||||
|
||||
void save(NationalSubjectCategory nationalSubjectCategory);
|
||||
|
||||
List<NationalSubjectCategory> listCategories();
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package se.su.dsv.scipro.grading;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class NationalSubjectCategoryServiceImpl
|
||||
@ -22,4 +23,9 @@ public class NationalSubjectCategoryServiceImpl
|
||||
public void save(NationalSubjectCategory nationalSubjectCategory) {
|
||||
nationalSubjectCategoryRepository.save(nationalSubjectCategory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NationalSubjectCategory> listCategories() {
|
||||
return nationalSubjectCategoryRepository.findAll();
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.GenerationType;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.JoinColumn;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.OneToOne;
|
||||
import jakarta.persistence.Table;
|
||||
import se.su.dsv.scipro.project.Project;
|
||||
@ -39,6 +41,10 @@ public class PublicationMetadata {
|
||||
@Column(name = "keywords_english")
|
||||
private String keywordsEnglish;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "national_subject_category_id")
|
||||
private NationalSubjectCategory nationalSubjectCategory;;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
@ -87,6 +93,14 @@ public class PublicationMetadata {
|
||||
this.keywordsEnglish = keywordsEnglish;
|
||||
}
|
||||
|
||||
public NationalSubjectCategory getNationalSubjectCategory() {
|
||||
return nationalSubjectCategory;
|
||||
}
|
||||
|
||||
public void setNationalSubjectCategory(NationalSubjectCategory nationalSubjectCategory) {
|
||||
this.nationalSubjectCategory = nationalSubjectCategory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PublicationMetadata{" +
|
||||
@ -96,6 +110,7 @@ public class PublicationMetadata {
|
||||
", abstractEnglish='" + abstractEnglish + '\'' +
|
||||
", keywordsSwedish='" + keywordsSwedish + '\'' +
|
||||
", keywordsEnglish='" + keywordsEnglish + '\'' +
|
||||
", nationalSubjectCategory=" + nationalSubjectCategory + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
ALTER TABLE publication_metadata ADD COLUMN national_subject_category_id BIGINT NULL;
|
||||
ALTER TABLE publication_metadata
|
||||
ADD CONSTRAINT FK_publication_metadata_national_subject_category
|
||||
FOREIGN KEY (national_subject_category_id) REFERENCES national_subject_category(id);
|
@ -22,6 +22,11 @@
|
||||
<input class="form-control" id="keywords_sv" wicket:id="keywords_sv">
|
||||
</div>
|
||||
</wicket:enclosure>
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="national_subject_category">National subject category</label>
|
||||
<select class="form-select" id="national_subject_category" wicket:id="national_subject_category">
|
||||
</select>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -1,13 +1,21 @@
|
||||
package se.su.dsv.scipro.grading;
|
||||
|
||||
import org.apache.wicket.markup.html.form.DropDownChoice;
|
||||
import org.apache.wicket.markup.html.form.LambdaChoiceRenderer;
|
||||
import org.apache.wicket.markup.html.form.TextArea;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.panel.GenericPanel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.LambdaModel;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import se.su.dsv.scipro.system.Language;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class PublicationMetadataFormComponentPanel extends GenericPanel<PublicationMetadata> {
|
||||
@Inject
|
||||
NationalSubjectCategoryService nationalSubjectCategoryService;
|
||||
|
||||
public PublicationMetadataFormComponentPanel(String id, IModel<PublicationMetadata> metadataModel) {
|
||||
super(id, metadataModel);
|
||||
|
||||
@ -19,6 +27,16 @@ public class PublicationMetadataFormComponentPanel extends GenericPanel<Publicat
|
||||
TextField<String> keywordsSwedish = new TextField<>("keywords_sv", LambdaModel.of(metadataModel, PublicationMetadata::getKeywordsSwedish, PublicationMetadata::setKeywordsSwedish));
|
||||
keywordsSwedish.setVisible(inSwedish());
|
||||
add(keywordsSwedish);
|
||||
DropDownChoice<NationalSubjectCategory> nationalSubjectCategoryChoice = new DropDownChoice<>(
|
||||
"national_subject_category",
|
||||
LambdaModel.of(
|
||||
metadataModel,
|
||||
PublicationMetadata::getNationalSubjectCategory,
|
||||
PublicationMetadata::setNationalSubjectCategory),
|
||||
LoadableDetachableModel.of(nationalSubjectCategoryService::listCategories),
|
||||
new LambdaChoiceRenderer<>(NationalSubjectCategory::getEnglishName, NationalSubjectCategory::getId));
|
||||
nationalSubjectCategoryChoice.setNullValid(true);
|
||||
add(nationalSubjectCategoryChoice);
|
||||
}
|
||||
|
||||
private boolean inSwedish() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user