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

View File

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