- Filter für die Publikationen einer Reihe in der Detailansicht von Series
- Code Cleanup git-svn-id: https://svn.libreccm.org/ccm/trunk@2273 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
142a0c6969
commit
c5306b93b1
|
|
@ -89,7 +89,7 @@ association {
|
||||||
Integer[0..1] publicationOrder = cms_organizationalunits_publications_map.publication_order INTEGER;
|
Integer[0..1] publicationOrder = cms_organizationalunits_publications_map.publication_order INTEGER;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Retrieves the publications (the ids). Allows filtering for a orgaunit id
|
//Retrieves the publications of an organizational unit (the ids). Allows filtering for a orgaunit id
|
||||||
//The authors are merged into one field in the result, each publication will
|
//The authors are merged into one field in the result, each publication will
|
||||||
//only appear one time
|
//only appear one time
|
||||||
query getIdsOfPublicationsForOrgaUnit {
|
query getIdsOfPublicationsForOrgaUnit {
|
||||||
|
|
@ -107,12 +107,52 @@ query getIdsOfPublicationsForOrgaUnit {
|
||||||
join cms_organizationalunits_publications_map on ct_publication_bundles.bundle_id = cms_organizationalunits_publications_map.publication_id
|
join cms_organizationalunits_publications_map on ct_publication_bundles.bundle_id = cms_organizationalunits_publications_map.publication_id
|
||||||
where cms_organizationalunits_publications_map.orgaunit_id in :orgaunitIds
|
where cms_organizationalunits_publications_map.orgaunit_id in :orgaunitIds
|
||||||
} map {
|
} map {
|
||||||
publicationId =ct_publication_bundles.bundle_id;
|
publicationId = ct_publication_bundles.bundle_id;
|
||||||
orgaunitId = cms_organizationalunits_publications_map.orgaunit_id;
|
orgaunitId = cms_organizationalunits_publications_map.orgaunit_id;
|
||||||
name = cms_items.name;
|
name = cms_items.name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Retrieves the publications of a series (the ids). Allows filtering for a orgaunit id
|
||||||
|
//The authors are merged into one field in the result, each publication will
|
||||||
|
//only appear one time
|
||||||
|
query getIdsOfPublicationsForSeries {
|
||||||
|
BigDecimal publicationId;
|
||||||
|
BigDecimal seriesId;
|
||||||
|
String name;
|
||||||
|
String volumeOfSeries;
|
||||||
|
|
||||||
|
do {
|
||||||
|
select distinct on (ct_publication_bundles.bundle_id)
|
||||||
|
ct_publication_bundles.bundle_id,
|
||||||
|
cms_items.name,
|
||||||
|
ct_publications_volume_in_series.series_id,
|
||||||
|
ct_publications_volume_in_series.volumeOfSeries
|
||||||
|
from ct_publication_bundles
|
||||||
|
join cms_items on ct_publication_bundles.bundle_id = cms_items.item_id
|
||||||
|
join ct_publications_volume_in_series on ct_publication_bundles.bundle_id = ct_publications_volume_in_series.publication_id
|
||||||
|
where ct_publications_volume_in_series.series_id = :seriesId
|
||||||
|
} map {
|
||||||
|
publicationId = ct_publication_bundles.bundle_id;
|
||||||
|
seriesId = ct_publications_volume_in_series.series_id;
|
||||||
|
name = cms_items.name;
|
||||||
|
volumeOfSeries = ct_publications_volume_in_series.volumeOfSeries;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
query getVolumeOfSeries {
|
||||||
|
String volumeOfSeries;
|
||||||
|
|
||||||
|
do {
|
||||||
|
select ct_publications_volume_in_series.volumeOfSeries
|
||||||
|
from ct_publications_volume_in_series
|
||||||
|
where ct_publications_volume_in_series.series_id = :seriesId
|
||||||
|
and ct_publications_volume_in_series.publication_id = :publicationId
|
||||||
|
} map {
|
||||||
|
volumeOfSeries = ct_publications_volume_in_series.volumeOfSeries;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Retrieves all publications of an author
|
//Retrieves all publications of an author
|
||||||
query getPublicationsForAuthor {
|
query getPublicationsForAuthor {
|
||||||
BigDecimal publicationId;
|
BigDecimal publicationId;
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.List;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Jens Pelzetter
|
* @author Jens Pelzetter
|
||||||
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class Series extends ContentPage {
|
public class Series extends ContentPage {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,37 +27,40 @@ import org.apache.log4j.Logger;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Jens Pelzetter
|
* @author Jens Pelzetter
|
||||||
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class VolumeInSeriesCollection extends DomainCollection {
|
public class VolumeInSeriesCollection extends DomainCollection {
|
||||||
|
|
||||||
public static final String LINK_VOLUME_OF_SERIES = "link.volumeOfSeries";
|
public static final String LINK_VOLUME = "link.volumeOfSeries";
|
||||||
public static final String VOLUME_OF_SERIES = "volumeOfSeries";
|
public static final String VOLUME_OF_SERIES = "volumeOfSeries";
|
||||||
public static final Logger s_log =
|
public static final Logger LOGGER = Logger.getLogger(VolumeInSeriesCollection.class);
|
||||||
Logger.getLogger(VolumeInSeriesCollection.class);
|
|
||||||
|
|
||||||
public VolumeInSeriesCollection(DataCollection dataCollection) {
|
public VolumeInSeriesCollection(final DataCollection dataCollection) {
|
||||||
super(dataCollection);
|
super(dataCollection);
|
||||||
|
|
||||||
m_dataCollection.addOrder(LINK_VOLUME_OF_SERIES);
|
m_dataCollection.addOrder(LINK_VOLUME);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getVolumeOfSeries() {
|
public String getVolumeOfSeries() {
|
||||||
return (Integer) m_dataCollection.get(LINK_VOLUME_OF_SERIES);
|
return (String) m_dataCollection.get(LINK_VOLUME);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVolumeOfSeries(Integer volumeOfSeries) {
|
public void setVolumeOfSeries(final String volumeOfSeries) {
|
||||||
DataObject link = (DataObject) this.get("link");
|
final DataObject link = (DataObject) this.get("link");
|
||||||
|
|
||||||
link.set(VOLUME_OF_SERIES, volumeOfSeries);
|
link.set(VOLUME_OF_SERIES, volumeOfSeries);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Publication getPublication() {
|
public Publication getPublication() {
|
||||||
final PublicationBundle bundle = (PublicationBundle) DomainObjectFactory.newInstance(m_dataCollection.getDataObject());
|
final PublicationBundle bundle = (PublicationBundle) DomainObjectFactory.newInstance(m_dataCollection.
|
||||||
|
getDataObject());
|
||||||
return (Publication) bundle.getPrimaryInstance();
|
return (Publication) bundle.getPrimaryInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Publication getPublication(final String language) {
|
public Publication getPublication(final String language) {
|
||||||
final PublicationBundle bundle = (PublicationBundle) DomainObjectFactory.newInstance(m_dataCollection.getDataObject());
|
final PublicationBundle bundle = (PublicationBundle) DomainObjectFactory.newInstance(m_dataCollection.
|
||||||
|
getDataObject());
|
||||||
return (Publication) bundle.getInstance(language);
|
return (Publication) bundle.getInstance(language);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,19 +21,32 @@ package com.arsdigita.cms.contenttypes.ui;
|
||||||
import com.arsdigita.bebop.Page;
|
import com.arsdigita.bebop.Page;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.cms.ContentItem;
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.ContentPage;
|
||||||
import com.arsdigita.cms.ExtraXMLGenerator;
|
import com.arsdigita.cms.ExtraXMLGenerator;
|
||||||
import com.arsdigita.cms.contenttypes.EditshipCollection;
|
import com.arsdigita.cms.contenttypes.EditshipCollection;
|
||||||
import com.arsdigita.cms.contenttypes.GenericPerson;
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
import com.arsdigita.cms.contenttypes.Publication;
|
import com.arsdigita.cms.contenttypes.Publication;
|
||||||
import com.arsdigita.cms.contenttypes.Series;
|
import com.arsdigita.cms.contenttypes.Series;
|
||||||
import com.arsdigita.cms.contenttypes.VolumeInSeriesCollection;
|
import com.arsdigita.cms.contenttypes.ui.panels.SelectFilter;
|
||||||
|
import com.arsdigita.cms.contenttypes.ui.panels.TextFilter;
|
||||||
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
|
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
|
import com.arsdigita.globalization.Globalization;
|
||||||
import com.arsdigita.globalization.GlobalizationHelper;
|
import com.arsdigita.globalization.GlobalizationHelper;
|
||||||
|
import com.arsdigita.kernel.Kernel;
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
import com.arsdigita.persistence.DataQuery;
|
||||||
|
import com.arsdigita.persistence.Filter;
|
||||||
|
import com.arsdigita.persistence.FilterFactory;
|
||||||
|
import com.arsdigita.persistence.OID;
|
||||||
|
import com.arsdigita.persistence.SessionManager;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -43,6 +56,25 @@ import java.util.Locale;
|
||||||
public class SeriesExtraXmlGenerator implements ExtraXMLGenerator {
|
public class SeriesExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
|
|
||||||
private boolean listMode = false;
|
private boolean listMode = false;
|
||||||
|
private static final String YEAR_PARAM = "yearOfPublication";
|
||||||
|
private static final String TITLE_PARAM = "title";
|
||||||
|
private static final String AUTHOR_PARAM = "author";
|
||||||
|
private final SelectFilter yearFilter = new SelectFilter(YEAR_PARAM,
|
||||||
|
YEAR_PARAM,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
true);
|
||||||
|
private final TextFilter titleFilter = new TextFilter(TITLE_PARAM,
|
||||||
|
ContentPage.TITLE);
|
||||||
|
private final TextFilter authorFilter;
|
||||||
|
|
||||||
|
public SeriesExtraXmlGenerator() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
authorFilter = new TextFilter(AUTHOR_PARAM, "authorsStr");
|
||||||
|
}
|
||||||
|
|
||||||
public void generateXML(final ContentItem item,
|
public void generateXML(final ContentItem item,
|
||||||
final Element element,
|
final Element element,
|
||||||
|
|
@ -114,18 +146,46 @@ public class SeriesExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
private void createVolumesXml(final Series series,
|
private void createVolumesXml(final Series series,
|
||||||
final Element parent,
|
final Element parent,
|
||||||
final PageState state) {
|
final PageState state) {
|
||||||
final VolumeInSeriesCollection volumes = series.getVolumes();
|
//final VolumeInSeriesCollection volumes = series.getVolumes();
|
||||||
if ((volumes == null) || volumes.isEmpty()) {
|
final DataQuery volumes = getData(series);
|
||||||
|
if ((volumes == null)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final HttpServletRequest request = state.getRequest();
|
||||||
|
final String yearValue = Globalization.decodeParameter(request, YEAR_PARAM);
|
||||||
|
final String titleValue = Globalization.decodeParameter(request, TITLE_PARAM);
|
||||||
|
final String authorValue = Globalization.decodeParameter(request, AUTHOR_PARAM);
|
||||||
|
|
||||||
|
final Element filtersElem = parent.newChildElement("filters");
|
||||||
|
|
||||||
|
yearFilter.setDataQuery(volumes, YEAR_PARAM);
|
||||||
|
applyYearFilter(volumes, request);
|
||||||
|
applyTitleFilter(volumes, request);
|
||||||
|
applyAuthorFilter(volumes, request);
|
||||||
|
|
||||||
|
yearFilter.generateXml(filtersElem);
|
||||||
|
titleFilter.generateXml(filtersElem);
|
||||||
|
authorFilter.generateXml(filtersElem);
|
||||||
|
|
||||||
|
if (volumes.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
final Element volumesElem = parent.newChildElement("volumes");
|
final Element volumesElem = parent.newChildElement("volumes");
|
||||||
while (volumes.next()) {
|
while (volumes.next()) {
|
||||||
createVolumeXml(volumes.getPublication(GlobalizationHelper.
|
// createVolumeXml(volumes.getPublication(GlobalizationHelper.
|
||||||
getNegotiatedLocale().getLanguage()),
|
// getNegotiatedLocale().getLanguage()),
|
||||||
volumes.getVolumeOfSeries(),
|
// volumes.getVolumeOfSeries(),
|
||||||
|
// volumesElem,
|
||||||
|
// state);
|
||||||
|
createVolumeXml((BigDecimal) volumes.get("id"),
|
||||||
|
series.getSeriesBundle().getID(),
|
||||||
|
(String) volumes.get("objectType"),
|
||||||
volumesElem,
|
volumesElem,
|
||||||
state);
|
state);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -159,14 +219,34 @@ public class SeriesExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void createVolumeXml(final BigDecimal publicationId,
|
||||||
|
final BigDecimal seriesId,
|
||||||
|
final String objectType,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state) {
|
||||||
|
final Publication publication = (Publication) DomainObjectFactory.
|
||||||
|
newInstance(new OID(objectType, publicationId));
|
||||||
|
|
||||||
|
final DataQuery query = SessionManager.getSession().retrieveQuery(
|
||||||
|
"com.arsdigita.cms.contenttypes.getVolumeOfSeries");
|
||||||
|
query.setParameter("seriesId", seriesId);
|
||||||
|
query.setParameter("publicationId", publication.getPublicationBundle().getID());
|
||||||
|
|
||||||
|
query.next();
|
||||||
|
final String volume = (String) query.get("volumeOfSeries");
|
||||||
|
query.close();
|
||||||
|
|
||||||
|
createVolumeXml(publication, volume, parent, state);
|
||||||
|
}
|
||||||
|
|
||||||
private void createVolumeXml(final Publication publication,
|
private void createVolumeXml(final Publication publication,
|
||||||
final Integer volume,
|
final String volume,
|
||||||
final Element volumesElem,
|
final Element volumesElem,
|
||||||
final PageState state) {
|
final PageState state) {
|
||||||
final XmlGenerator generator = new XmlGenerator(publication);
|
final XmlGenerator generator = new XmlGenerator(publication);
|
||||||
generator.setItemElemName("publication", "");
|
generator.setItemElemName("publication", "");
|
||||||
if (volume != null) {
|
if (volume != null) {
|
||||||
generator.addItemAttribute("volumeNr", volume.toString());
|
generator.addItemAttribute("volumeNr", volume);
|
||||||
}
|
}
|
||||||
generator.setListMode(true);
|
generator.setListMode(true);
|
||||||
generator.generateXML(state, volumesElem, "");
|
generator.generateXML(state, volumesElem, "");
|
||||||
|
|
@ -180,6 +260,83 @@ public class SeriesExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
this.listMode = listMode;
|
this.listMode = listMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void applyYearFilter(final DataQuery publications,
|
||||||
|
final HttpServletRequest request) {
|
||||||
|
final String yearValue = Globalization.decodeParameter(request, YEAR_PARAM);
|
||||||
|
if ((yearValue != null) && !(yearValue.trim().isEmpty())) {
|
||||||
|
yearFilter.setValue(yearValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((yearFilter.getFilter() != null)
|
||||||
|
&& !(yearFilter.getFilter().isEmpty())) {
|
||||||
|
publications.addFilter(yearFilter.getFilter());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyTitleFilter(final DataQuery publications,
|
||||||
|
final HttpServletRequest request) {
|
||||||
|
final String titleValue = Globalization.decodeParameter(request, TITLE_PARAM);
|
||||||
|
if ((titleValue != null) && !(titleValue.trim().isEmpty())) {
|
||||||
|
titleFilter.setValue(titleValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((titleFilter.getFilter() != null)
|
||||||
|
&& !(titleFilter.getFilter().isEmpty())) {
|
||||||
|
publications.addFilter(titleFilter.getFilter());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyAuthorFilter(final DataQuery publications,
|
||||||
|
final HttpServletRequest request) {
|
||||||
|
final String authorValue = Globalization.decodeParameter(request, AUTHOR_PARAM);
|
||||||
|
if ((authorValue != null) && !(authorValue.trim().isEmpty())) {
|
||||||
|
authorFilter.setValue(authorValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((authorFilter.getFilter() != null)
|
||||||
|
&& !(authorFilter.getFilter().isEmpty())) {
|
||||||
|
publications.addFilter(authorFilter.getFilter());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataCollection getData(final Series series) {
|
||||||
|
final DataQuery publicationBundlesQuery = SessionManager.getSession().retrieveQuery(
|
||||||
|
"com.arsdigita.cms.contenttypes.getIdsOfPublicationsForSeries");
|
||||||
|
|
||||||
|
publicationBundlesQuery.setParameter("seriesId", series.getSeriesBundle().getID().toString());
|
||||||
|
|
||||||
|
final StringBuilder filterBuilder = new StringBuilder();
|
||||||
|
while (publicationBundlesQuery.next()) {
|
||||||
|
if (filterBuilder.length() > 0) {
|
||||||
|
filterBuilder.append(',');
|
||||||
|
}
|
||||||
|
filterBuilder.append(publicationBundlesQuery.get("publicationId").toString());
|
||||||
|
}
|
||||||
|
final DataCollection publicationsQuery = SessionManager.getSession().retrieve(Publication.BASE_DATA_OBJECT_TYPE);
|
||||||
|
|
||||||
|
if (filterBuilder.length() == 0) {
|
||||||
|
//No publications return null to indicate
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
publicationsQuery.addFilter(String.format("parent.id in (%s)", filterBuilder.toString()));
|
||||||
|
|
||||||
|
if (Kernel.getConfig().languageIndependentItems()) {
|
||||||
|
final FilterFactory filterFactory = publicationsQuery.getFilterFactory();
|
||||||
|
final Filter filter = filterFactory.or().
|
||||||
|
addFilter(filterFactory.equals("language", GlobalizationHelper.getNegotiatedLocale().getLanguage())).
|
||||||
|
addFilter(filterFactory.and().
|
||||||
|
addFilter(filterFactory.equals("language", GlobalizationHelper.LANG_INDEPENDENT)).
|
||||||
|
addFilter(filterFactory.notIn("parent", "com.arsdigita.navigation.getParentIDsOfMatchedItems").set(
|
||||||
|
"language", GlobalizationHelper.getNegotiatedLocale().getLanguage())));
|
||||||
|
publicationsQuery.addFilter(filter);
|
||||||
|
} else {
|
||||||
|
publicationsQuery.addEqualsFilter("language", GlobalizationHelper.getNegotiatedLocale().getLanguage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return publicationsQuery;
|
||||||
|
}
|
||||||
|
|
||||||
private class XmlGenerator extends SimpleXMLGenerator {
|
private class XmlGenerator extends SimpleXMLGenerator {
|
||||||
|
|
||||||
private final ContentItem item;
|
private final ContentItem item;
|
||||||
|
|
@ -193,5 +350,6 @@ public class SeriesExtraXmlGenerator implements ExtraXMLGenerator {
|
||||||
protected ContentItem getContentItem(final PageState state) {
|
protected ContentItem getContentItem(final PageState state) {
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,11 +22,10 @@ import com.arsdigita.bebop.FormData;
|
||||||
import com.arsdigita.bebop.FormProcessException;
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.SaveCancelSection;
|
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
import com.arsdigita.bebop.form.TextField;
|
import com.arsdigita.bebop.form.TextField;
|
||||||
import com.arsdigita.bebop.parameters.IntegerParameter;
|
|
||||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
import com.arsdigita.cms.ContentType;
|
import com.arsdigita.cms.ContentType;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.contenttypes.Publication;
|
import com.arsdigita.cms.contenttypes.Publication;
|
||||||
|
|
@ -35,68 +34,61 @@ import com.arsdigita.cms.contenttypes.VolumeInSeriesCollection;
|
||||||
import com.arsdigita.cms.ui.ItemSearchWidget;
|
import com.arsdigita.cms.ui.ItemSearchWidget;
|
||||||
import com.arsdigita.cms.ui.authoring.BasicItemForm;
|
import com.arsdigita.cms.ui.authoring.BasicItemForm;
|
||||||
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
|
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Jens Pelzetter
|
* @author Jens Pelzetter
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("PMD.LongVariable")
|
||||||
public class SeriesVolumeAddForm extends BasicItemForm {
|
public class SeriesVolumeAddForm extends BasicItemForm {
|
||||||
|
|
||||||
private static final Logger s_log = Logger.getLogger(
|
private static final String ITEM_SEARCH = "volumes";
|
||||||
SeriesVolumeAddForm.class);
|
//private final SeriesPropertiesStep seriesStep;
|
||||||
private SeriesPropertiesStep m_step;
|
private ItemSearchWidget itemSearch;
|
||||||
private ItemSearchWidget m_itemSearch;
|
//private final SaveCancelSection saveCancelSection;
|
||||||
private SaveCancelSection m_saveCancelSection;
|
//private final ItemSelectionModel itemModel;
|
||||||
private final String ITEM_SEARCH = "volumes";
|
private final SimpleEditStep editStep;
|
||||||
private ItemSelectionModel m_itemModel;
|
|
||||||
private SimpleEditStep editStep;
|
|
||||||
private Label selectedVolumeLabel;
|
private Label selectedVolumeLabel;
|
||||||
private TextField volumeOfSeries;
|
private TextField volumeOfSeries;
|
||||||
|
|
||||||
public SeriesVolumeAddForm(ItemSelectionModel itemModel,
|
public SeriesVolumeAddForm(final ItemSelectionModel itemModel, final SimpleEditStep editStep) {
|
||||||
SimpleEditStep editStep) {
|
|
||||||
super("VolumesEntryForm", itemModel);
|
super("VolumesEntryForm", itemModel);
|
||||||
m_itemModel = itemModel;
|
//itemModel = itemModel;
|
||||||
this.editStep = editStep;
|
this.editStep = editStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addWidgets() {
|
protected void addWidgets() {
|
||||||
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
add(new Label(PublicationGlobalizationUtil.globalize(
|
||||||
"publications.ui.series.volumes.select_publication").
|
"publications.ui.series.volumes.select_publication")));
|
||||||
localize()));
|
itemSearch = new ItemSearchWidget(
|
||||||
m_itemSearch = new ItemSearchWidget(
|
|
||||||
ITEM_SEARCH,
|
ITEM_SEARCH,
|
||||||
ContentType.findByAssociatedObjectType(
|
ContentType.findByAssociatedObjectType(
|
||||||
Publication.class.getName()));
|
Publication.class.getName()));
|
||||||
m_itemSearch.setDisableCreatePane(true);
|
itemSearch.setDisableCreatePane(true);
|
||||||
add(m_itemSearch);
|
add(itemSearch);
|
||||||
|
|
||||||
selectedVolumeLabel = new Label("");
|
selectedVolumeLabel = new Label("");
|
||||||
add(selectedVolumeLabel);
|
add(selectedVolumeLabel);
|
||||||
|
|
||||||
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
add(new Label(PublicationGlobalizationUtil.globalize("publications.ui.series.volume_of_series")));
|
||||||
"publications.ui.series.volume_of_series").localize()));
|
ParameterModel volumeOfSeriesParam = new StringParameter(VolumeInSeriesCollection.VOLUME_OF_SERIES);
|
||||||
ParameterModel volumeOfSeriesParam = new IntegerParameter(
|
|
||||||
VolumeInSeriesCollection.VOLUME_OF_SERIES);
|
|
||||||
volumeOfSeries = new TextField(volumeOfSeriesParam);
|
volumeOfSeries = new TextField(volumeOfSeriesParam);
|
||||||
add(volumeOfSeries);
|
add(volumeOfSeries);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(FormSectionEvent fse) throws FormProcessException {
|
public void init(final FormSectionEvent fse) throws FormProcessException {
|
||||||
FormData data = fse.getFormData();
|
final FormData data = fse.getFormData();
|
||||||
PageState state = fse.getPageState();
|
final PageState state = fse.getPageState();
|
||||||
|
|
||||||
final Publication publication = ((SeriesVolumesStep) editStep).
|
final Publication publication = ((SeriesVolumesStep) editStep).
|
||||||
getSelectedPublication();
|
getSelectedPublication();
|
||||||
final Integer volume =
|
final String volume = ((SeriesVolumesStep) editStep).getSelectedVolume();
|
||||||
((SeriesVolumesStep) editStep).getSelectedVolume();
|
|
||||||
|
|
||||||
if (publication == null) {
|
if (publication == null) {
|
||||||
m_itemSearch.setVisible(state, true);
|
itemSearch.setVisible(state, true);
|
||||||
selectedVolumeLabel.setVisible(state, false);
|
selectedVolumeLabel.setVisible(state, false);
|
||||||
} else {
|
} else {
|
||||||
data.put(ITEM_SEARCH, publication);
|
data.put(ITEM_SEARCH, publication);
|
||||||
|
|
@ -106,7 +98,7 @@ public class SeriesVolumeAddForm extends BasicItemForm {
|
||||||
volumeOfSeries.setValue(state, volume);
|
volumeOfSeries.setValue(state, volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_itemSearch.setVisible(state, false);
|
itemSearch.setVisible(state, false);
|
||||||
selectedVolumeLabel.setLabel(publication.getTitle());
|
selectedVolumeLabel.setLabel(publication.getTitle());
|
||||||
selectedVolumeLabel.setVisible(state, true);
|
selectedVolumeLabel.setVisible(state, true);
|
||||||
}
|
}
|
||||||
|
|
@ -115,23 +107,21 @@ public class SeriesVolumeAddForm extends BasicItemForm {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(FormSectionEvent fse) throws FormProcessException {
|
public void process(final FormSectionEvent fse) throws FormProcessException {
|
||||||
FormData data = fse.getFormData();
|
final FormData data = fse.getFormData();
|
||||||
PageState state = fse.getPageState();
|
final PageState state = fse.getPageState();
|
||||||
Series series = (Series) getItemSelectionModel().
|
final Series series = (Series) getItemSelectionModel().getSelectedObject(state);
|
||||||
getSelectedObject(state);
|
|
||||||
|
|
||||||
if (!(this.getSaveCancelSection().getCancelButton().
|
if (!(this.getSaveCancelSection().getCancelButton().
|
||||||
isSelected(state))) {
|
isSelected(state))) {
|
||||||
Publication volume = ((SeriesVolumesStep) editStep).
|
Publication volume = ((SeriesVolumesStep) editStep).
|
||||||
getSelectedPublication();
|
getSelectedPublication();
|
||||||
|
|
||||||
Integer volOfSeries;
|
final String volOfSeries;
|
||||||
if (this.volumeOfSeries.getValue(state) == null) {
|
if (this.volumeOfSeries.getValue(state) == null) {
|
||||||
volOfSeries = null;
|
volOfSeries = null;
|
||||||
} else {
|
} else {
|
||||||
volOfSeries = data.getInteger(
|
volOfSeries = data.getString(VolumeInSeriesCollection.VOLUME_OF_SERIES);
|
||||||
VolumeInSeriesCollection.VOLUME_OF_SERIES);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (volume == null) {
|
if (volume == null) {
|
||||||
|
|
@ -141,7 +131,7 @@ public class SeriesVolumeAddForm extends BasicItemForm {
|
||||||
|
|
||||||
series.addVolume(volume, (String) data.get(VolumeInSeriesCollection.VOLUME_OF_SERIES));
|
series.addVolume(volume, (String) data.get(VolumeInSeriesCollection.VOLUME_OF_SERIES));
|
||||||
} else {
|
} else {
|
||||||
VolumeInSeriesCollection volumes = series.getVolumes();
|
final VolumeInSeriesCollection volumes = series.getVolumes();
|
||||||
|
|
||||||
while (volumes.next()) {
|
while (volumes.next()) {
|
||||||
if (volumes.getPublication().equals(volume)) {
|
if (volumes.getPublication().equals(volume)) {
|
||||||
|
|
@ -162,7 +152,7 @@ public class SeriesVolumeAddForm extends BasicItemForm {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validate(FormSectionEvent fse) throws FormProcessException {
|
public void validate(final FormSectionEvent fse) throws FormProcessException {
|
||||||
final PageState state = fse.getPageState();
|
final PageState state = fse.getPageState();
|
||||||
final FormData data = fse.getFormData();
|
final FormData data = fse.getFormData();
|
||||||
boolean editing = false;
|
boolean editing = false;
|
||||||
|
|
@ -175,8 +165,7 @@ public class SeriesVolumeAddForm extends BasicItemForm {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Series series = (Series) getItemSelectionModel().
|
final Series series = (Series) getItemSelectionModel().getSelectedObject(state);
|
||||||
getSelectedObject(state);
|
|
||||||
Publication volume = (Publication) data.get(ITEM_SEARCH);
|
Publication volume = (Publication) data.get(ITEM_SEARCH);
|
||||||
if (volume == null) {
|
if (volume == null) {
|
||||||
volume = ((SeriesVolumesStep) editStep).getSelectedPublication();
|
volume = ((SeriesVolumesStep) editStep).getSelectedPublication();
|
||||||
|
|
@ -185,9 +174,8 @@ public class SeriesVolumeAddForm extends BasicItemForm {
|
||||||
|
|
||||||
|
|
||||||
if (!editing) {
|
if (!editing) {
|
||||||
VolumeInSeriesCollection volumes = series.getVolumes();
|
final VolumeInSeriesCollection volumes = series.getVolumes();
|
||||||
volumes.addFilter(
|
volumes.addFilter(String.format("id = %s", volume.getID().toString()));
|
||||||
String.format("id = %s", volume.getID().toString()));
|
|
||||||
if (volumes.size() > 0) {
|
if (volumes.size() > 0) {
|
||||||
data.addError(PublicationGlobalizationUtil.globalize(
|
data.addError(PublicationGlobalizationUtil.globalize(
|
||||||
"publications.ui.series.volume_of_series.already_added"));
|
"publications.ui.series.volume_of_series.already_added"));
|
||||||
|
|
|
||||||
|
|
@ -32,32 +32,30 @@ import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
|
||||||
*/
|
*/
|
||||||
public class SeriesVolumesStep extends SimpleEditStep {
|
public class SeriesVolumesStep extends SimpleEditStep {
|
||||||
|
|
||||||
|
@SuppressWarnings("PMD.LongVariable")
|
||||||
protected static final String ADD_VOLUME_SHEET_NAME = "addVolume";
|
protected static final String ADD_VOLUME_SHEET_NAME = "addVolume";
|
||||||
|
@SuppressWarnings("PMD.LongVariable")
|
||||||
private Publication selectedPublication;
|
private Publication selectedPublication;
|
||||||
private Integer selectedVolume;
|
private String selectedVolume;
|
||||||
|
|
||||||
public SeriesVolumesStep(
|
public SeriesVolumesStep(final ItemSelectionModel itemModel,
|
||||||
ItemSelectionModel itemModel,
|
final AuthoringKitWizard parent) {
|
||||||
AuthoringKitWizard parent) {
|
|
||||||
this(itemModel, parent, null);
|
this(itemModel, parent, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SeriesVolumesStep(
|
public SeriesVolumesStep(final ItemSelectionModel itemModel,
|
||||||
ItemSelectionModel itemModel,
|
final AuthoringKitWizard parent,
|
||||||
AuthoringKitWizard parent,
|
final String prefix) {
|
||||||
String prefix) {
|
|
||||||
super(itemModel, parent, prefix);
|
super(itemModel, parent, prefix);
|
||||||
|
|
||||||
BasicItemForm addVolumeSheet =
|
final BasicItemForm addVolumeSheet =
|
||||||
new SeriesVolumeAddForm(itemModel, this);
|
new SeriesVolumeAddForm(itemModel, this);
|
||||||
add(ADD_VOLUME_SHEET_NAME,
|
add(ADD_VOLUME_SHEET_NAME,
|
||||||
(String) PublicationGlobalizationUtil.globalize(
|
PublicationGlobalizationUtil.globalize("publications.ui.series.add_volume"),
|
||||||
"publications.ui.series.add_volume").localize(),
|
|
||||||
new WorkflowLockedComponentAccess(addVolumeSheet, itemModel),
|
new WorkflowLockedComponentAccess(addVolumeSheet, itemModel),
|
||||||
addVolumeSheet.getSaveCancelSection().getCancelButton());
|
addVolumeSheet.getSaveCancelSection().getCancelButton());
|
||||||
|
|
||||||
SeriesVolumesTable volumesTable = new SeriesVolumesTable(
|
final SeriesVolumesTable volumesTable = new SeriesVolumesTable(itemModel, this);
|
||||||
itemModel, this);
|
|
||||||
setDisplayComponent(volumesTable);
|
setDisplayComponent(volumesTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -65,15 +63,17 @@ public class SeriesVolumesStep extends SimpleEditStep {
|
||||||
return selectedPublication;
|
return selectedPublication;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("PMD.LongVariable")
|
||||||
public void setSelectedPublication(final Publication selectedPublication) {
|
public void setSelectedPublication(final Publication selectedPublication) {
|
||||||
this.selectedPublication = selectedPublication;
|
this.selectedPublication = selectedPublication;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getSelectedVolume() {
|
public String getSelectedVolume() {
|
||||||
return selectedVolume;
|
return selectedVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedVolume(final Integer selectedVolume) {
|
public void setSelectedVolume(final String selectedVolume) {
|
||||||
this.selectedVolume = selectedVolume;
|
this.selectedVolume = selectedVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,27 +50,26 @@ import org.apache.log4j.Logger;
|
||||||
* @author Jens Pelzetter
|
* @author Jens Pelzetter
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class SeriesVolumesTable extends Table implements TableActionListener {
|
public class SeriesVolumesTable extends Table {
|
||||||
|
|
||||||
private static final Logger s_log =
|
private static final Logger LOGGER = Logger.getLogger(SeriesVolumesTable.class);
|
||||||
Logger.getLogger(SeriesVolumesTable.class);
|
private static final String TABLE_COL_EDIT = "table_col_edit";
|
||||||
private final String TABLE_COL_EDIT = "table_col_edit";
|
@SuppressWarnings("PMD.LongVariable")
|
||||||
private final String TABLE_COL_EDIT_ASSOC = "table_col_edit_assoc";
|
private static final String TABLE_COL_EDIT_ASSOC = "table_col_edit_assoc";
|
||||||
private final String TABLE_COL_DEL = "table_col_del";
|
private static final String TABLE_COL_DEL = "table_col_del";
|
||||||
private ItemSelectionModel m_itemModel;
|
private final ItemSelectionModel m_itemModel;
|
||||||
private SimpleEditStep editStep;
|
private final SimpleEditStep editStep;
|
||||||
|
|
||||||
public SeriesVolumesTable(ItemSelectionModel itemModel,
|
public SeriesVolumesTable(final ItemSelectionModel itemModel,
|
||||||
SimpleEditStep editStep) {
|
final SimpleEditStep editStep) {
|
||||||
super();
|
super();
|
||||||
m_itemModel = itemModel;
|
m_itemModel = itemModel;
|
||||||
this.editStep = editStep;
|
this.editStep = editStep;
|
||||||
|
|
||||||
setEmptyView(
|
setEmptyView(new Label(PublicationGlobalizationUtil.globalize(
|
||||||
new Label(PublicationGlobalizationUtil.globalize(
|
|
||||||
"publications.ui.series.volumes.none")));
|
"publications.ui.series.volumes.none")));
|
||||||
|
|
||||||
TableColumnModel colModel = getColumnModel();
|
final TableColumnModel colModel = getColumnModel();
|
||||||
colModel.add(new TableColumn(
|
colModel.add(new TableColumn(
|
||||||
0,
|
0,
|
||||||
PublicationGlobalizationUtil.globalize(
|
PublicationGlobalizationUtil.globalize(
|
||||||
|
|
@ -97,54 +96,48 @@ public class SeriesVolumesTable extends Table implements TableActionListener {
|
||||||
colModel.get(2).setCellRenderer(new EditAssocCellRenderer());
|
colModel.get(2).setCellRenderer(new EditAssocCellRenderer());
|
||||||
colModel.get(3).setCellRenderer(new DeleteCellRenderer());
|
colModel.get(3).setCellRenderer(new DeleteCellRenderer());
|
||||||
|
|
||||||
addTableActionListener(this);
|
addTableActionListener(new ActionListener());
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SeriesVolumesTableModelBuilder
|
private class SeriesVolumesTableModelBuilder extends LockableImpl implements TableModelBuilder {
|
||||||
extends LockableImpl
|
|
||||||
implements TableModelBuilder {
|
|
||||||
|
|
||||||
private ItemSelectionModel m_itemModel;
|
private final ItemSelectionModel m_itemModel;
|
||||||
|
|
||||||
public SeriesVolumesTableModelBuilder(
|
public SeriesVolumesTableModelBuilder(final ItemSelectionModel itemModel) {
|
||||||
ItemSelectionModel itemModel) {
|
|
||||||
m_itemModel = itemModel;
|
m_itemModel = itemModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TableModel makeModel(Table table, PageState state) {
|
public TableModel makeModel(final Table table, final PageState state) {
|
||||||
table.getRowSelectionModel().clearSelection(state);
|
table.getRowSelectionModel().clearSelection(state);
|
||||||
Series series =
|
final Series series = (Series) m_itemModel.getSelectedObject(state);
|
||||||
(Series) m_itemModel.getSelectedObject(state);
|
return new SeriesVolumesTableModel(table, series);
|
||||||
return new SeriesVolumesTableModel(table, state, series);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SeriesVolumesTableModel implements TableModel {
|
private class SeriesVolumesTableModel implements TableModel {
|
||||||
|
|
||||||
private final int MAX_DESC_LENGTH = 25;
|
private final Table table;
|
||||||
private Table m_table;
|
private final VolumeInSeriesCollection volumesCollection;
|
||||||
private VolumeInSeriesCollection m_volumesCollection;
|
private Publication publication;
|
||||||
private Publication m_publication;
|
|
||||||
|
|
||||||
private SeriesVolumesTableModel(
|
public SeriesVolumesTableModel(final Table table,
|
||||||
Table table,
|
final Series series) {
|
||||||
PageState state,
|
this.table = table;
|
||||||
Series series) {
|
volumesCollection = series.getVolumes();
|
||||||
m_table = table;
|
|
||||||
m_volumesCollection = series.getVolumes();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getColumnCount() {
|
public int getColumnCount() {
|
||||||
return m_table.getColumnModel().size();
|
return table.getColumnModel().size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean nextRow() {
|
public boolean nextRow() {
|
||||||
boolean ret;
|
boolean ret;
|
||||||
|
|
||||||
if ((m_volumesCollection != null) && m_volumesCollection.next()) {
|
if ((volumesCollection != null) && volumesCollection.next()) {
|
||||||
m_publication = m_volumesCollection.getPublication();
|
publication = volumesCollection.getPublication();
|
||||||
ret = true;
|
ret = true;
|
||||||
} else {
|
} else {
|
||||||
ret = false;
|
ret = false;
|
||||||
|
|
@ -154,16 +147,15 @@ public class SeriesVolumesTable extends Table implements TableActionListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getElementAt(int columnIndex) {
|
public Object getElementAt(final int columnIndex) {
|
||||||
switch (columnIndex) {
|
switch (columnIndex) {
|
||||||
case 0:
|
case 0:
|
||||||
return m_publication.getTitle();
|
return publication.getTitle();
|
||||||
case 1:
|
case 1:
|
||||||
return m_volumesCollection.getVolumeOfSeries();
|
return volumesCollection.getVolumeOfSeries();
|
||||||
case 2:
|
case 2:
|
||||||
return PublicationGlobalizationUtil.globalize(
|
return PublicationGlobalizationUtil.globalize(
|
||||||
"publications.ui.series.volumes.edit_assoc").
|
"publications.ui.series.volumes.edit_assoc").localize();
|
||||||
localize();
|
|
||||||
case 3:
|
case 3:
|
||||||
return PublicationGlobalizationUtil.globalize(
|
return PublicationGlobalizationUtil.globalize(
|
||||||
"publication.ui.series.volumes.remove").localize();
|
"publication.ui.series.volumes.remove").localize();
|
||||||
|
|
@ -172,29 +164,32 @@ public class SeriesVolumesTable extends Table implements TableActionListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getKeyAt(int columnIndex) {
|
@Override
|
||||||
return m_publication.getID();
|
public Object getKeyAt(final int columnIndex) {
|
||||||
|
return publication.getID();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class EditCellRenderer
|
private class EditCellRenderer extends LockableImpl implements TableCellRenderer {
|
||||||
extends LockableImpl
|
|
||||||
implements TableCellRenderer {
|
public EditCellRenderer() {
|
||||||
|
super();
|
||||||
|
//Nothing
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(
|
public Component getComponent(final Table table,
|
||||||
Table table,
|
final PageState state,
|
||||||
PageState state,
|
final Object value,
|
||||||
Object value,
|
final boolean isSelected,
|
||||||
boolean isSelected,
|
final Object key,
|
||||||
Object key,
|
final int row,
|
||||||
int row,
|
final int col) {
|
||||||
int col) {
|
final SecurityManager securityManager = CMS.getSecurityManager(state);
|
||||||
SecurityManager securityManager =
|
final Series series = (Series) m_itemModel.getSelectedObject(state);
|
||||||
CMS.getSecurityManager(state);
|
|
||||||
Series series = (Series) m_itemModel.getSelectedObject(state);
|
|
||||||
|
|
||||||
boolean canEdit = securityManager.canAccess(
|
final boolean canEdit = securityManager.canAccess(
|
||||||
state.getRequest(),
|
state.getRequest(),
|
||||||
SecurityManager.EDIT_ITEM,
|
SecurityManager.EDIT_ITEM,
|
||||||
series);
|
series);
|
||||||
|
|
@ -204,44 +199,46 @@ public class SeriesVolumesTable extends Table implements TableActionListener {
|
||||||
try {
|
try {
|
||||||
volume = new Publication((BigDecimal) key);
|
volume = new Publication((BigDecimal) key);
|
||||||
} catch (ObjectNotFoundException ex) {
|
} catch (ObjectNotFoundException ex) {
|
||||||
s_log.warn(String.format("No object with key '%s' found.",
|
LOGGER.warn(String.format("No object with key '%s' found.",
|
||||||
key),
|
key),
|
||||||
ex);
|
ex);
|
||||||
return new Label(value.toString());
|
return new Label(value.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
ContentSection section = volume.getContentSection();//CMS.getContext().getContentSection();
|
final ContentSection section = volume.getContentSection();//CMS.getContext().getContentSection();
|
||||||
ItemResolver resolver = section.getItemResolver();
|
final ItemResolver resolver = section.getItemResolver();
|
||||||
Link link =
|
final Link link = new Link(String.format("%s",
|
||||||
new Link(String.format("%s",
|
value.toString()),
|
||||||
value.toString()),
|
resolver.generateItemURL(state,
|
||||||
resolver.generateItemURL(state,
|
volume,
|
||||||
volume,
|
section,
|
||||||
section,
|
volume.getVersion()));
|
||||||
volume.getVersion()));
|
|
||||||
|
|
||||||
return link;
|
return link;
|
||||||
} else {
|
} else {
|
||||||
Publication volume;
|
final Publication volume;
|
||||||
try {
|
try {
|
||||||
volume = new Publication((BigDecimal) key);
|
volume = new Publication((BigDecimal) key);
|
||||||
} catch (ObjectNotFoundException ex) {
|
} catch (ObjectNotFoundException ex) {
|
||||||
s_log.warn(String.format("No object with key '%s' found.",
|
LOGGER.warn(String.format("No object with key '%s' found.",
|
||||||
key),
|
key),
|
||||||
ex);
|
ex);
|
||||||
return new Label(value.toString());
|
return new Label(value.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
Label label = new Label(String.format("%s",
|
final Label label = new Label(String.format("%s",
|
||||||
value.toString()));
|
value.toString()));
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class EditAssocCellRenderer
|
private class EditAssocCellRenderer extends LockableImpl implements TableCellRenderer {
|
||||||
extends LockableImpl
|
|
||||||
implements TableCellRenderer {
|
public EditAssocCellRenderer() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
final PageState state,
|
final PageState state,
|
||||||
|
|
@ -254,96 +251,92 @@ public class SeriesVolumesTable extends Table implements TableActionListener {
|
||||||
CMS.getSecurityManager(state);
|
CMS.getSecurityManager(state);
|
||||||
final Series series = (Series) m_itemModel.getSelectedObject(state);
|
final Series series = (Series) m_itemModel.getSelectedObject(state);
|
||||||
|
|
||||||
boolean canEdit = securityManager.canAccess(
|
final boolean canEdit = securityManager.canAccess(
|
||||||
state.getRequest(),
|
state.getRequest(),
|
||||||
SecurityManager.EDIT_ITEM,
|
SecurityManager.EDIT_ITEM,
|
||||||
series);
|
series);
|
||||||
|
|
||||||
if (canEdit) {
|
if (canEdit) {
|
||||||
ControlLink link = new ControlLink(value.toString());
|
return new ControlLink(value.toString());
|
||||||
return link;
|
|
||||||
} else {
|
} else {
|
||||||
Label label = new Label(value.toString());
|
return new Label(value.toString());
|
||||||
return label;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class DeleteCellRenderer
|
private class DeleteCellRenderer extends LockableImpl implements TableCellRenderer {
|
||||||
extends LockableImpl
|
|
||||||
implements TableCellRenderer {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(
|
public Component getComponent(final Table table,
|
||||||
Table table,
|
final PageState state,
|
||||||
PageState state,
|
final Object value,
|
||||||
Object value,
|
final boolean isSelected,
|
||||||
boolean isSelected,
|
final Object key,
|
||||||
Object key,
|
final int row,
|
||||||
int row,
|
final int col) {
|
||||||
int col) {
|
final SecurityManager securityManager = CMS.getSecurityManager(state);
|
||||||
SecurityManager securityManager =
|
final Series series = (Series) m_itemModel.getSelectedObject(state);
|
||||||
CMS.getSecurityManager(state);
|
|
||||||
Series series = (Series) m_itemModel.getSelectedObject(state);
|
|
||||||
|
|
||||||
boolean canDelete = securityManager.canAccess(
|
final boolean canDelete = securityManager.canAccess(
|
||||||
state.getRequest(),
|
state.getRequest(),
|
||||||
SecurityManager.DELETE_ITEM,
|
SecurityManager.DELETE_ITEM,
|
||||||
series);
|
series);
|
||||||
|
|
||||||
if (canDelete) {
|
if (canDelete) {
|
||||||
ControlLink link = new ControlLink(value.toString());
|
final ControlLink link = new ControlLink(value.toString());
|
||||||
link.setConfirmation((String) PublicationGlobalizationUtil.
|
link.setConfirmation((String) PublicationGlobalizationUtil.
|
||||||
globalize(
|
globalize(
|
||||||
"publications.ui.series.volumes.remove.confirm").
|
"publications.ui.series.volumes.remove.confirm").
|
||||||
localize());
|
localize());
|
||||||
return link;
|
return link;
|
||||||
} else {
|
} else {
|
||||||
Label label = new Label(value.toString());
|
final Label label = new Label(value.toString());
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private class ActionListener implements TableActionListener {
|
||||||
public void cellSelected(TableActionEvent event) {
|
|
||||||
PageState state = event.getPageState();
|
|
||||||
|
|
||||||
Publication publication =
|
public ActionListener() {
|
||||||
new Publication(new BigDecimal(event.getRowKey().
|
//Nothing
|
||||||
toString()));
|
}
|
||||||
|
|
||||||
Series series = (Series) m_itemModel.getSelectedObject(state);
|
public void cellSelected(final TableActionEvent event) {
|
||||||
|
final PageState state = event.getPageState();
|
||||||
TableColumn column = getColumnModel().get(event.getColumn().intValue());
|
|
||||||
|
final Publication publication = new Publication(new BigDecimal(event.getRowKey().toString()));
|
||||||
VolumeInSeriesCollection volumes = series.getVolumes();
|
|
||||||
|
final Series series = (Series) m_itemModel.getSelectedObject(state);
|
||||||
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
|
|
||||||
} else if (TABLE_COL_EDIT_ASSOC.equals(column.getHeaderKey().toString())) {
|
final TableColumn column = getColumnModel().get(event.getColumn().intValue());
|
||||||
while (volumes.next()) {
|
|
||||||
if (volumes.getPublication(publication.getLanguage()).equals(
|
final VolumeInSeriesCollection volumes = series.getVolumes();
|
||||||
publication)) {
|
|
||||||
break;
|
if (TABLE_COL_EDIT_ASSOC.equals(column.getHeaderKey().toString())) {
|
||||||
}
|
while (volumes.next()) {
|
||||||
}
|
if (volumes.getPublication(publication.getLanguage()).equals(publication)) {
|
||||||
|
break;
|
||||||
((SeriesVolumesStep) editStep).setSelectedPublication(
|
}
|
||||||
publication);
|
}
|
||||||
((SeriesVolumesStep) editStep).setSelectedVolume(volumes.
|
|
||||||
getVolumeOfSeries());
|
((SeriesVolumesStep) editStep).setSelectedPublication(publication);
|
||||||
|
((SeriesVolumesStep) editStep).setSelectedVolume(volumes.getVolumeOfSeries());
|
||||||
volumes.close();
|
|
||||||
|
volumes.close();
|
||||||
editStep.showComponent(state,
|
|
||||||
SeriesVolumesStep.ADD_VOLUME_SHEET_NAME);
|
editStep.showComponent(state,
|
||||||
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
|
SeriesVolumesStep.ADD_VOLUME_SHEET_NAME);
|
||||||
series.removeVolume(publication);
|
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
|
||||||
|
series.removeVolume(publication);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void headSelected(final TableActionEvent event) {
|
||||||
|
//Nothing to do.
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void headSelected(TableActionEvent event) {
|
|
||||||
//Nothing to do.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue