- SciProjectPropertyForm akzeptiert jetzt auch unvollständige Datumsangaben

- SciProjectSummaryTab und SciProjectDescTab sind fertiggestellt


git-svn-id: https://svn.libreccm.org/ccm/trunk@1191 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-10-23 08:51:37 +00:00
parent 29a260504d
commit 5289ebee50
3 changed files with 167 additions and 32 deletions

View File

@ -0,0 +1,127 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.xml.Element;
import com.redhat.persistence.pdl.adapters.ShortAd;
import org.apache.log4j.Logger;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciProjectDescTab implements GenericOrgaUnitTab {
public final Logger logger = Logger.getLogger(SciProjectDescTab.class);
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
final long start = System.currentTimeMillis();
boolean result;
final Desc desc = getData(orgaunit);
if (desc.getDesc() == null) {
result = false;
} else {
result = !desc.getDesc().isEmpty();
}
logger.debug(String.format("Needed %d ms to determine if project '%s' "
+ "has a description.",
System.currentTimeMillis() - start,
orgaunit.getName()));
return result;
}
public void generateXml(final GenericOrganizationalUnit orgaunit,
final Element parent,
final PageState state) {
final long start = System.currentTimeMillis();
final Desc desc = getData(orgaunit);
if ((desc.getShortDesc() != null)
&& !desc.getShortDesc().trim().isEmpty()) {
final Element shortDescElem = parent.newChildElement("shortDescription");
shortDescElem.setText(desc.getShortDesc());
}
final Element descElem = parent.newChildElement("description");
descElem.setText(desc.getDesc());
if ((desc.getFunding() != null)
&& !desc.getFunding().trim().isEmpty()) {
final Element fundingElem = parent.newChildElement("funding");
fundingElem.setText(desc.getFunding());
}
if ((desc.getFundingVolume() != null)
&& !desc.getFundingVolume().trim().isEmpty()) {
final Element volumeElem = parent.newChildElement("fundingVolume");
volumeElem.setText(desc.getFundingVolume());
}
logger.debug(String.format("Generated XML for description tab of "
+ "project '%s' in %d ms",
orgaunit.getName(),
System.currentTimeMillis() - start));
}
private Desc getData(final GenericOrganizationalUnit orgaunit) {
if (!(orgaunit instanceof SciProject)) {
throw new IllegalArgumentException(String.format(
"This tab can only process instances of "
+ "'com.arsdigita.cms.contenttypes.SciProject'. Provided "
+ "object is of type '%s'",
orgaunit.getClass().getName()));
}
final SciProject project = (SciProject) orgaunit;
final Desc desc = new Desc();
desc.setShortDesc(project.getProjectShortDescription());
desc.setDesc(project.getProjectDescription());
desc.setFunding(project.getFunding());
desc.setFundingVolume(project.getFundingVolume());
return desc;
}
private class Desc {
private String shortDesc;
private String desc;
private String funding;
private String fundingVolume;
public String getShortDesc() {
return shortDesc;
}
public void setShortDesc(final String shortDesc) {
this.shortDesc = shortDesc;
}
public String getDesc() {
return desc;
}
public void setDesc(final String desc) {
this.desc = desc;
}
public String getFunding() {
return funding;
}
public void setFunding(final String funding) {
this.funding = funding;
}
public String getFundingVolume() {
return fundingVolume;
}
public void setFundingVolume(final String fundingVolume) {
this.fundingVolume = fundingVolume;
}
}
}

View File

@ -10,7 +10,7 @@ import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener; import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.form.Date; import com.arsdigita.bebop.form.Date;
import com.arsdigita.bebop.form.TextArea; import com.arsdigita.bebop.form.TextArea;
import com.arsdigita.bebop.parameters.DateParameter; import com.arsdigita.bebop.parameters.IncompleteDateParameter;
import com.arsdigita.bebop.parameters.ParameterModel; import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringInRangeValidationListener; import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.parameters.StringParameter;
@ -50,7 +50,7 @@ public class SciProjectPropertyForm
add(new Label(SciProjectGlobalizationUtil.globalize( add(new Label(SciProjectGlobalizationUtil.globalize(
"sciproject.ui.begin"))); "sciproject.ui.begin")));
ParameterModel beginParam = new DateParameter(SciProject.BEGIN); ParameterModel beginParam = new IncompleteDateParameter(SciProject.BEGIN);
Calendar today = new GregorianCalendar(); Calendar today = new GregorianCalendar();
Date begin = new Date(beginParam); Date begin = new Date(beginParam);
begin.setYearRange(1970, (today.get(Calendar.YEAR) + 2)); begin.setYearRange(1970, (today.get(Calendar.YEAR) + 2));
@ -58,7 +58,7 @@ public class SciProjectPropertyForm
add(new Label(SciProjectGlobalizationUtil.globalize( add(new Label(SciProjectGlobalizationUtil.globalize(
"sciproject.ui.end"))); "sciproject.ui.end")));
ParameterModel endParam = new DateParameter(SciProject.END); ParameterModel endParam = new IncompleteDateParameter(SciProject.END);
Date end = new Date(endParam); Date end = new Date(endParam);
end.setYearRange(1970, (today.get(Calendar.YEAR) + 8)); end.setYearRange(1970, (today.get(Calendar.YEAR) + 8));
add(end); add(end);

View File

@ -54,20 +54,19 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
final Element projectSummaryElem = parent.newChildElement( final Element projectSummaryElem = parent.newChildElement(
"projectSummary"); "projectSummary");
generateBasicDataXml(project, parent); generateBasicDataXml(project, projectSummaryElem);
if(config.isShowingMembers()) { if (config.isShowingMembers()) {
generateMembersXml(project, parent, state); generateMembersXml(project, projectSummaryElem, state);
}
if (config.isShowingContacts()) {
generateContactsXml(project, parent, state);
}
if (config.isShowingSubProjects()) {
generateSubProjectsXml(project, parent, state);
} }
if (config.isShowingContacts()) {
generateContactsXml(project, projectSummaryElem, state);
}
if (config.isShowingSubProjects()) {
generateSubProjectsXml(project, projectSummaryElem, state);
}
logger.debug(String.format("Generated XML for summary tab of project " logger.debug(String.format("Generated XML for summary tab of project "
+ "'%s' in %d ms.", + "'%s' in %d ms.",
@ -84,24 +83,27 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
final SciProject project, final SciProject project,
final Element parent) { final Element parent) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final Element addendumElem = parent.newChildElement("addendum"); if ((project.getAddendum() != null)
if ((project.getAddendum() != null) && !project.getAddendum().isEmpty()) { && !project.getAddendum().trim().isEmpty()) {
final Element addendumElem = parent.newChildElement("addendum");
addendumElem.setText(project.getAddendum()); addendumElem.setText(project.getAddendum());
} }
final Element lifeSpanElem = parent.newChildElement("lifeSpan"); if ((project.getBegin() != null) || (project.getEnd() != null)) {
final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); final Element lifeSpanElem = parent.newChildElement("lifeSpan");
if (project.getBegin() != null) { final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
lifeSpanElem.addAttribute("begin", if (project.getBegin() != null) {
dateFormat.format(project.getBegin())); lifeSpanElem.addAttribute("begin",
} dateFormat.format(project.getBegin()));
if (project.getEnd() != null) { }
lifeSpanElem.addAttribute("end", if (project.getEnd() != null) {
dateFormat.format(project.getEnd())); lifeSpanElem.addAttribute("end",
dateFormat.format(project.getEnd()));
}
} }
if ((project.getProjectShortDescription() != null) if ((project.getProjectShortDescription() != null)
&& !project.getProjectShortDescription().isEmpty()) { && !project.getProjectShortDescription().trim().isEmpty()) {
final Element shortDescElem = parent.newChildElement("shortDesc"); final Element shortDescElem = parent.newChildElement("shortDesc");
shortDescElem.setText(project.getProjectShortDescription()); shortDescElem.setText(project.getProjectShortDescription());
} }
@ -152,7 +154,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
while (personsQuery.next()) { while (personsQuery.next()) {
generateMemberXml((BigDecimal) personsQuery.get("memberId"), generateMemberXml((BigDecimal) personsQuery.get("memberId"),
parent, membersElem,
state); state);
} }
} else { } else {
@ -191,6 +193,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(member); final XmlGenerator generator = new XmlGenerator(member);
generator.setUseExtraXml(false);
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for member '%s' in %d ms.", logger.debug(String.format("Generated XML for member '%s' in %d ms.",
member.getFullName(), member.getFullName(),
@ -220,6 +223,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final XmlGenerator generator = new XmlGenerator(contact); final XmlGenerator generator = new XmlGenerator(contact);
generator.setUseExtraXml(false);
generator.generateXML(state, parent, ""); generator.generateXML(state, parent, "");
logger.debug(String.format("Generated XML for contact '%s' in %d ms.", logger.debug(String.format("Generated XML for contact '%s' in %d ms.",
contact.getName(), contact.getName(),
@ -230,6 +234,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
final Element parent, final Element parent,
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final Element subProjectsElem = parent.newChildElement("subProjects");
final GenericOrganizationalUnitSubordinateCollection subProjects = final GenericOrganizationalUnitSubordinateCollection subProjects =
project. project.
getSubordinateOrgaUnits(); getSubordinateOrgaUnits();
@ -239,7 +244,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
while (subProjects.next()) { while (subProjects.next()) {
generateSubProjectXml( generateSubProjectXml(
(SciProject) subProjects.getGenericOrganizationalUnit(), (SciProject) subProjects.getGenericOrganizationalUnit(),
parent, subProjectsElem,
state); state);
} }
logger.debug(String.format("Generated XML for subprojects of " logger.debug(String.format("Generated XML for subprojects of "
@ -252,9 +257,12 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
final Element parent, final Element parent,
final PageState state) { final PageState state) {
final long start = System.currentTimeMillis(); final long start = System.currentTimeMillis();
final Element subProjectElem = parent.newChildElement("subProject"); final XmlGenerator generator = new XmlGenerator(subProject);
generator.setUseExtraXml(false);
generator.generateXML(state, parent, "");
/*final Element subProjectElem = parent.newChildElement("subProject");
final Element subProjectTitle = subProjectElem.newChildElement("title"); final Element subProjectTitle = subProjectElem.newChildElement("title");
subProjectTitle.setText(subProject.getTitle()); subProjectTitle.setText(subProject.getTitle());*/
logger.debug(String.format("Generated XML for subproject '%s' in" logger.debug(String.format("Generated XML for subproject '%s' in"
+ "%d ms", + "%d ms",
subProject.getName(), subProject.getName(),
@ -267,7 +275,7 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
public XmlGenerator(final ContentItem item) { public XmlGenerator(final ContentItem item) {
super(); super();
this.item = item; this.item = item;
} }
@Override @Override