Component for creating export links for all publications in a category. Has to be added via JSP template. Needs mandalay revision 366 or newer to work. Export of filtered object lists are not working yet.
git-svn-id: https://svn.libreccm.org/ccm/trunk@2100 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
7a33e117e8
commit
a1a21afb46
|
|
@ -154,6 +154,10 @@ public class DataCollectionDefinition extends LockableImpl {
|
|||
m_filterCategory = filterCategory;
|
||||
}
|
||||
|
||||
public final boolean getDescendCategories() {
|
||||
return m_descendCategories;
|
||||
}
|
||||
|
||||
public final void setDescendCategories(boolean descendCategories) {
|
||||
Assert.isUnlocked(this);
|
||||
m_descendCategories = descendCategories;
|
||||
|
|
|
|||
|
|
@ -4,11 +4,9 @@ import com.arsdigita.globalization.Globalization;
|
|||
import com.arsdigita.navigation.Navigation;
|
||||
import com.arsdigita.persistence.DataCollection;
|
||||
import com.arsdigita.xml.Element;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.apache.log4j.Logger;
|
||||
|
|
@ -215,6 +213,35 @@ public class CustomizableObjectList extends ComplexObjectList {
|
|||
protected DataCollection getObjects(final HttpServletRequest request,
|
||||
final HttpServletResponse response) {
|
||||
//Set filters (using the SQL)
|
||||
// final StringBuilder sqlFilters = new StringBuilder();
|
||||
// for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) {
|
||||
// if ((filterEntry.getValue().getFilter() == null)
|
||||
// || (filterEntry.getValue().getFilter().isEmpty())) {
|
||||
// continue;
|
||||
// }
|
||||
//
|
||||
// if (sqlFilters.length() > 0) {
|
||||
// sqlFilters.append(" AND ");
|
||||
// }
|
||||
// sqlFilters.append(filterEntry.getValue().getFilter());
|
||||
// }
|
||||
//
|
||||
// logger.debug(String.format("filters: %s", sqlFilters));
|
||||
// if (sqlFilters.length() > 0) {
|
||||
// setSQLFilter(sqlFilters.toString());
|
||||
// }
|
||||
|
||||
final String filterSql = getFilterSql();
|
||||
if (filterSql.length() > 0) {
|
||||
setSQLFilter(filterSql);
|
||||
}
|
||||
|
||||
final DataCollection objects = super.getObjects(request, response);
|
||||
|
||||
return objects;
|
||||
}
|
||||
|
||||
public String getFilterSql() {
|
||||
final StringBuilder sqlFilters = new StringBuilder();
|
||||
for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) {
|
||||
if ((filterEntry.getValue().getFilter() == null)
|
||||
|
|
@ -233,9 +260,7 @@ public class CustomizableObjectList extends ComplexObjectList {
|
|||
setSQLFilter(sqlFilters.toString());
|
||||
}
|
||||
|
||||
final DataCollection objects = super.getObjects(request, response);
|
||||
|
||||
return objects;
|
||||
return sqlFilters.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -309,8 +334,7 @@ public class CustomizableObjectList extends ComplexObjectList {
|
|||
final Element sortFieldElems = controls.newChildElement("sortFields");
|
||||
sortFieldElems.addAttribute("sortBy", sortByKey);
|
||||
for (Map.Entry<String, String> sortField : sortFields.entrySet()) {
|
||||
final Element sortFieldElem = sortFieldElems.newChildElement(
|
||||
"sortField");
|
||||
final Element sortFieldElem = sortFieldElems.newChildElement("sortField");
|
||||
sortFieldElem.addAttribute("label", sortField.getKey());
|
||||
}
|
||||
}
|
||||
|
|
@ -320,4 +344,5 @@ public class CustomizableObjectList extends ComplexObjectList {
|
|||
|
||||
return content;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,6 @@
|
|||
package com.arsdigita.navigation.ui.object;
|
||||
|
||||
import com.arsdigita.xml.Element;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0"?>
|
||||
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
||||
name="ccm-sci-publicationsexportlinks"
|
||||
prettyName="ScientificCMS Publication Export Links Component"
|
||||
version="6.6.0"
|
||||
release="1"
|
||||
webapp="ROOT">
|
||||
|
||||
<ccm:dependencies>
|
||||
<ccm:requires name="ccm-core" version="6.6.0" release="ge"/>
|
||||
<ccm:requires name="ccm-cms" version="6.6.0" release="ge"/>
|
||||
<ccm:requires name="ccm-navigation" version="6.6.0" release="ge"/>
|
||||
<ccm:requires name="ccm-sci-publications" version="6.6.0" release="ge"/>
|
||||
</ccm:dependencies>
|
||||
|
||||
<ccm:directories>
|
||||
<ccm:directory name="src"/>
|
||||
</ccm:directories>
|
||||
<ccm:contacts>
|
||||
<ccm:contact uri="http://www.redhat.com/software/rhea" type="website"/>
|
||||
<ccm:contact uri="mailto:rhea@redhat.com" type="support"/>
|
||||
</ccm:contacts>
|
||||
<ccm:description>
|
||||
Provides a component which creates links for exporting all publications assigned to a category.
|
||||
</ccm:description>
|
||||
|
||||
</ccm:application>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<load>
|
||||
<requires>
|
||||
<table name="inits"/>
|
||||
<table name="acs_objects"/>
|
||||
<table name="cms_items"/>
|
||||
<table name="ct_publications"/>
|
||||
<initalizer class="com.arsdigita.cms.Initializer"/>
|
||||
<initalizer class="com.arsdigita.cms.contenttypes.PublicationInitalizer"/>
|
||||
<initalizer class="com.arsdigita.cms.scipublications.SciPublicationsInitalizer"/>
|
||||
<initalizer class="com.arsdigita.navigation.Initalizer"/>
|
||||
</requires>
|
||||
<provides>
|
||||
<initalizer class="com.arsdigita.cms.scipublications.PublicationExportLinksInitalizer"/>
|
||||
</provides>
|
||||
</load>
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package com.arsdigita.cms.scipublications;
|
||||
|
||||
import com.arsdigita.db.DbHelper;
|
||||
import com.arsdigita.persistence.pdl.ManifestSource;
|
||||
import com.arsdigita.persistence.pdl.NameFilter;
|
||||
import com.arsdigita.runtime.CompoundInitializer;
|
||||
import com.arsdigita.runtime.DomainInitEvent;
|
||||
import com.arsdigita.runtime.PDLInitializer;
|
||||
import com.arsdigita.runtime.RuntimeConfig;
|
||||
|
||||
/**
|
||||
* @author Jens Pelzetter
|
||||
* @version $Id$
|
||||
*/
|
||||
public class PublicationExportLinksInitalizer extends CompoundInitializer {
|
||||
|
||||
public PublicationExportLinksInitalizer() {
|
||||
|
||||
final String jdbcUrl = RuntimeConfig.getConfig().getJDBCURL();
|
||||
final int database = DbHelper.getDatabaseFromURL(jdbcUrl);
|
||||
|
||||
add(new PDLInitializer(new ManifestSource("empty.pdl.mf",
|
||||
new NameFilter(DbHelper.
|
||||
getDatabaseSuffix(database), "pdl"))));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(final DomainInitEvent event) {
|
||||
super.init(event);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.arsdigita.cms.scipublications;
|
||||
|
||||
import com.arsdigita.loader.PackageLoader;
|
||||
import com.arsdigita.runtime.ScriptContext;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class PublicationExportLinksLoader extends PackageLoader {
|
||||
|
||||
@Override
|
||||
public void run(final ScriptContext ctx) {
|
||||
//Nothing to do.
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package com.arsdigita.cms.scipublications.ui;
|
||||
|
||||
import com.arsdigita.categorization.Category;
|
||||
import com.arsdigita.cms.scipublications.exporter.SciPublicationsExporters;
|
||||
import com.arsdigita.cms.scipublications.imexporter.PublicationFormat;
|
||||
import com.arsdigita.navigation.ui.AbstractComponent;
|
||||
import com.arsdigita.navigation.ui.object.CustomizableObjectList;
|
||||
import com.arsdigita.xml.Element;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class PublicationExportLinks extends AbstractComponent {
|
||||
|
||||
private CustomizableObjectList objList;
|
||||
|
||||
public Element generateXML(final HttpServletRequest request,
|
||||
final HttpServletResponse response) {
|
||||
|
||||
final Element parent = new Element("publicationExportLinks");
|
||||
|
||||
final List<PublicationFormat> formats = SciPublicationsExporters.getInstance().getSupportedFormats();
|
||||
|
||||
for (PublicationFormat format : formats) {
|
||||
createExportLink(format, parent, getCategory());
|
||||
}
|
||||
|
||||
return parent;
|
||||
|
||||
}
|
||||
|
||||
public void setObjList(final CustomizableObjectList objList) {
|
||||
this.objList = objList;
|
||||
}
|
||||
|
||||
private void createExportLink(final PublicationFormat format,
|
||||
final Element parent,
|
||||
final Category category) {
|
||||
final Element exportLinkElem = parent.newChildElement("publicationExportLink");
|
||||
final Element formatKeyElem = exportLinkElem.newChildElement("formatKey");
|
||||
formatKeyElem.setText(format.getName().toLowerCase());
|
||||
final Element formatNameElem = exportLinkElem.newChildElement("formatName");
|
||||
formatNameElem.setText(format.getName());
|
||||
final Element categoryIdElem = exportLinkElem.newChildElement("categoryId");
|
||||
categoryIdElem.setText(category.getID().toString());
|
||||
final Element filterSqlElem = exportLinkElem.newChildElement("filterSql");
|
||||
filterSqlElem.setText(objList.getFilterSql());
|
||||
final Element desCatsElem = exportLinkElem.newChildElement("descendCategories");
|
||||
if (objList.getDefinition().getDescendCategories()) {
|
||||
desCatsElem.setText("true");
|
||||
} else {
|
||||
desCatsElem.setText("false");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue