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-94f89814c4df
master
jensp 2013-03-21 19:20:37 +00:00
parent 7a33e117e8
commit a1a21afb46
9 changed files with 190 additions and 12 deletions

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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);
}
}

View File

@ -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.
}
}

View File

@ -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");
}
}
}