ContentItmeRenderer for SciProject
parent
44ace169ec
commit
e204933a6f
|
|
@ -35,6 +35,7 @@ import javax.persistence.JoinTable;
|
|||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OrderBy;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*;
|
||||
|
|
@ -164,13 +165,16 @@ public class SciProject extends ContentItem implements Serializable {
|
|||
)
|
||||
private LocalizedString fundingVolume;
|
||||
|
||||
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
|
||||
@OneToMany(cascade = CascadeType.ALL, mappedBy = "project")
|
||||
@OrderBy("order ASC")
|
||||
private List<Contact> contacts;
|
||||
|
||||
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
|
||||
@OrderBy("member.personName ASC")
|
||||
private List<Membership> members;
|
||||
|
||||
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
|
||||
@OrderBy("order ASC")
|
||||
private List<Sponsoring> sponsoring;
|
||||
|
||||
public SciProject() {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,141 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.scientificcms.pagemodel.contentitems;
|
||||
|
||||
import org.librecms.assets.ContactableEntity;
|
||||
import org.librecms.assets.Organization;
|
||||
import org.librecms.assets.Person;
|
||||
import org.librecms.contentsection.ContentItem;
|
||||
import org.librecms.pagemodel.assets.AbstractAssetRenderer;
|
||||
import org.librecms.pagemodel.assets.AssetRenderers;
|
||||
import org.librecms.pagemodel.contentitems.AbstractContentItemRenderer;
|
||||
import org.librecms.pagemodel.contentitems.ContentItemRenderer;
|
||||
import org.scientificcms.contenttypes.sciproject.Contact;
|
||||
import org.scientificcms.contenttypes.sciproject.Membership;
|
||||
import org.scientificcms.contenttypes.sciproject.SciProject;
|
||||
import org.scientificcms.contenttypes.sciproject.Sponsoring;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@ContentItemRenderer(renders = SciProject.class)
|
||||
@RequestScoped
|
||||
public class SciProjectRenderer extends AbstractContentItemRenderer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Inject
|
||||
private AssetRenderers assetRenderers;
|
||||
|
||||
@Override
|
||||
protected void renderItem(final ContentItem item,
|
||||
final Locale language,
|
||||
final Map<String, Object> result) {
|
||||
|
||||
final SciProject project;
|
||||
if (item instanceof SciProject) {
|
||||
project = (SciProject) item;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
result.put("begin", project.getBegin());
|
||||
result.put("end", project.getEnd());
|
||||
|
||||
result.put("shortDescription",
|
||||
project.getShortDescription().getValue(language));
|
||||
result.put("projectDescription",
|
||||
project.getProjectDescription().getValue(language));
|
||||
result.put("funding",
|
||||
project.getFunding().getValue(language));
|
||||
result.put("fundingVolume",
|
||||
project.getFundingVolume().getValue(language));
|
||||
|
||||
result.put("contacts",
|
||||
project
|
||||
.getContacts()
|
||||
.stream()
|
||||
.map(contact -> renderContact(contact, language))
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
result.put("members",
|
||||
project
|
||||
.getMembers()
|
||||
.stream()
|
||||
.map(member -> renderMember(member, language))
|
||||
.collect(Collectors.toList()));
|
||||
result.put("sponsoring",
|
||||
project
|
||||
.getSponsoring()
|
||||
.stream()
|
||||
.map(sponsoring -> renderSponsoring(sponsoring, language))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AssetRenderers getAssetRenderers() {
|
||||
return assetRenderers;
|
||||
}
|
||||
|
||||
private Map<String, Object> renderContact(final Contact contact,
|
||||
final Locale language) {
|
||||
|
||||
final Map<String, Object> result = new HashMap<>();
|
||||
result.put("contactId", contact.getContactId());
|
||||
result.put("contactType", contact.getContactType());
|
||||
result.put("order", contact.getOrder());
|
||||
|
||||
final ContactableEntity contactable = contact.getContactable();
|
||||
final AbstractAssetRenderer contactableRenderer = assetRenderers
|
||||
.findRenderer(contactable.getClass());
|
||||
result.put("contactable", contactableRenderer.render(contactable,
|
||||
language));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private Map<String, Object> renderMember(final Membership membership,
|
||||
final Locale language) {
|
||||
|
||||
final Map<String, Object> result = new HashMap<>();
|
||||
result.put("membershipId", membership.getMembershipId());
|
||||
result.put("role", membership.getRole());
|
||||
result.put("status", membership.getStatus().toString());
|
||||
|
||||
final Person member = membership.getMember();
|
||||
final AbstractAssetRenderer memberRenderer = assetRenderers
|
||||
.findRenderer(member.getClass());
|
||||
result.put("member", memberRenderer.render(member, language));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private Map<String, Object> renderSponsoring(final Sponsoring sponsoring,
|
||||
final Locale language) {
|
||||
|
||||
final Map<String, Object> result = new HashMap<>();
|
||||
result.put("sponsoringId", sponsoring.getSponsoringId());
|
||||
result.put("fundingCode", sponsoring.getFundingCode());
|
||||
result.put("order", sponsoring.getOrder());
|
||||
|
||||
final Organization sponsor = sponsoring.getSponsor();
|
||||
final AbstractAssetRenderer sponsorRenderer = assetRenderers
|
||||
.findRenderer(sponsor.getClass());
|
||||
result.put("sponsor", sponsorRenderer.render(sponsor, language));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue