Entfernen der obsoleten Module ccm-sci-types-organization und ccm-sci-types-organizationwithpublications aus dem trunk

git-svn-id: https://svn.libreccm.org/ccm/trunk@1277 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-11-20 10:39:58 +00:00
parent fbb91c0767
commit cce7f68179
189 changed files with 0 additions and 25178 deletions

View File

@ -1,26 +0,0 @@
<?xml version="1.0"?>
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
name="ccm-sci-types-organization"
prettyName="OpenCCM Content Types"
version="6.6.1"
release="1"
webapp="ROOT">
<ccm:dependencies>
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
<ccm:requires name="ccm-cms" version="6.6.0" relation="ge"/>
<ccm:requires name="ccm-cms" version="6.6.3" relation="le"/>
<ccm:requires name="ccm-cms-assets-relatedlink" version="6.6.0" relation="ge"/>
</ccm:dependencies>
<ccm:directories>
<ccm:directory name="pdl"/>
<ccm:directory name="sql"/>
<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>
Content types for scientific organizations
</ccm:description>
</ccm:application>

View File

@ -1,165 +0,0 @@
model com.arsdigita.cms.contenttypes;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.cms.*;
object type SciDepartment extends GenericOrganizationalUnit {
String[0..1] departmentShortDescription = ct_sciorga_departments.shortdescription VARCHAR(500);
String[0..1] departmentDescription = ct_sciorga_departments.description CLOB;
reference key ( ct_sciorga_departments.department_id );
}
association {
SciDepartment[0..n] superDepartment = join ct_sciorga_departments.department_id
to ct_sciorga_departments_subdepartments_map.subdepartment_id,
join ct_sciorga_departments_subdepartments_map.department_id
to ct_sciorga_departments.department_id;
SciDepartment[0..n] subDepartments = join ct_sciorga_departments.department_id
to ct_sciorga_departments_subdepartments_map.department_id,
join ct_sciorga_departments_subdepartments_map.subdepartment_id
to ct_sciorga_departments.department_id;
Integer[0..1] subDepartmentOrder = ct_sciorga_departments_subdepartments_map.subdepartments_order INTEGER;
}
association {
SciDepartment[0..n] department = join ct_sciorga_projects.project_id
to ct_sciorga_departments_projects_map.project_id,
join ct_sciorga_departments_projects_map.department_id
to ct_sciorga_departments.department_id;
SciProject[0..n] projects = join ct_sciorga_departments.department_id
to ct_sciorga_departments_projects_map.department_id,
join ct_sciorga_departments_projects_map.project_id
to ct_sciorga_projects.project_id;
Integer[0..1] departmentOrder = ct_sciorga_departments_projects_map.departmentOrder INTEGER;
Integer[0..1] projectOrder = ct_sciorga_departments_projects_map.projectorder INTEGER;
}
query getIdsOfContactsOfSciDepartment {
BigDecimal contactId;
do {
select cms_organizationalunits_contact_map.contact_id
from cms_organizationalunits_contact_map
where cms_organizationalunits_contact_map.organizationalunit_id = :department
} map {
contactId = cms_organizationalunits_contact_map.contact_id;
}
}
query getIdsOfSubDepartmentsOfSciDepartment {
BigDecimal subDepartmentId;
do {
select ct_sciorga_departments_subdepartments_map.subdepartment_id
from ct_sciorga_departments_subdepartments_map
where ct_sciorga_departments_subdepartments_map.department_id = :department
} map {
subDepartmentId = ct_sciorga_departments_subdepartments_map.subdepartment_id;
}
}
query getIdsOfMembersOfSciDepartment {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :department
} map {
memberId = cms_organizationalunits_person_map.person_id;
}
}
query getIdsOfActiveMembersOfSciDepartment {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :department
and cms_organizationalunits_person_map.status = 'active'
} map {
memberId = cms_organizationalunits_person_map.person_id;
}
}
query getIdsOfAssociatedMembersOfSciDepartment {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :department
and cms_organizationalunits_person_map.status = 'associated'
} map {
memberId = cms_organizationalunits_person_map.personId;
}
}
query getIdsOfFormerMembersOfSciDepartment {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :department
and (cms_organizationalunits_person_map.status = 'former' or cms_organizationalunits_person_map.status = 'associatedFormer')
} map {
memberId = cms_organizationalunits_person_map.personId;
}
}
query getIdsOfProjectsOfSciDepartment {
BigDecimal projectId;
do {
select ct_sciorga_departments_projects_map.project_id
from ct_sciorga_departments_projects_map
where ct_sciorga_departments_projects_map.department_id = :department
} map {
projectId = ct_sciorga_departments_projects_map.project_id;
}
}
query getIdsOfOngoingProjectsOfSciDepartment {
BigDecimal projectId;
do {
select ct_sciorga_projects.project_id
from ct_sciorga_departments_projects_map
join ct_sciorga_projects on ct_sciorga_departments_projects_map.project_id = ct_sciorga_projects.project_id
where ct_sciorga_departments_projects_map.department_id = :department and ct_sciorga_projects.projectend >= ':today'
} map {
projectId = ct_sciorga_projects.project_id;
}
}
query getIdsOfFinishedProjectsOfSciDepartment {
BigDecimal projectId;
do {
select ct_sciorga_projects.project_id
from ct_sciorga_departments_projects_map
join ct_sciorga_projects on ct_sciorga_departments_projects_map.project_id = ct_sciorga_projects.project_id
where ct_sciorga_departments_projects_map.department_id = :department and ct_sciorga_projects.projectend < ':today'
} map {
projectId = ct_sciorga_projects.project_id;
}
}
query getIdsOfPublicationLinksOfSciDepartment {
BigDecimal linkId;
do {
select cms_related_links.related_link_id
from cms_related_links
where cms_related_links.owner_id = :department
and cms_related_links.link_list_name = 'SciDepartmentPublications'
} map {
linkId = cms_related_links.related_link_id;
}
}

View File

@ -1,8 +0,0 @@
model com.arsdigita.cms.contenttypes;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.cms.*;
object type SciMember extends GenericPerson {
reference key ( ct_sciorga_members.member_id );
}

View File

@ -1,169 +0,0 @@
model com.arsdigita.cms.contenttypes;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.cms.*;
object type SciOrganization extends GenericOrganizationalUnit {
String[0..1] organizationShortDescription = ct_sciorga_organizations.shortdescription VARCHAR(500);
String[0..1] organizationDescription = ct_sciorga_organizations.description CLOB;
reference key ( ct_sciorga_organizations.organization_id );
}
association {
SciOrganization[0..n] organization = join ct_sciorga_departments.department_id
to ct_sciorga_organizations_departments_map.department_id,
join ct_sciorga_organizations_departments_map.organization_id
to ct_sciorga_organizations.organization_id;
SciDepartment[0..n] departments = join ct_sciorga_organizations.organization_id
to ct_sciorga_organizations_departments_map.organization_id,
join ct_sciorga_organizations_departments_map.department_id
to ct_sciorga_departments.department_id;
Integer[0..1] departmentOrder = ct_sciorga_organizations_departments_map.department_order INTEGER;
Integer[0..1] organizationOrder = ct_sciorga_organizations_departments_map.organization_order INTEGER;
}
association {
SciOrganization[0..n] organization = join ct_sciorga_projects.project_id
to ct_sciorga_organizations_projects_map.project_id,
join ct_sciorga_organizations_projects_map.organization_id
to ct_sciorga_organizations.organization_id;
SciProject[0..n] projects = join ct_sciorga_organizations.organization_id
to ct_sciorga_organizations_projects_map.organization_id,
join ct_sciorga_organizations_projects_map.project_id
to ct_sciorga_projects.project_id;
Integer[0..1] projectOrder = ct_sciorga_organizations_projects_map.project_order INTEGER;
Integer[0..1] organizationOrder = ct_sciorga_organizations_projects_map.organization_order INTEGER;
}
query getIdsOfContactsOfSciOrganization {
BigDecimal contactId;
do {
select cms_organizationalunits_contact_map.contact_id
from cms_organizationalunits_contact_map
where cms_organizationalunits_contact_map.organizationalunit_id = :organization
} map {
contactId = cms_organizationalunits_contact_map.contact_id;
}
}
query getIdsOfDepartmentsOfSciOrganization {
BigDecimal departmentId;
do {
select ct_sciorga_organizations_departments_map.department_id
from ct_sciorga_organizations_departments_map
where ct_sciorga_organizations_departments_map.organization_id = :organization
} map {
departmentId = ct_sciorga_organizations_departments_map.department_id;
}
}
query getIdsOfMembersOfSciOrganization {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :organization
} map {
memberId = cms_organizationalunits_person_map.person_id;
}
}
query getIdsOfActiveMembersOfSciOrganization {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :organization
and cms_organizationalunits_person_map.status = 'active'
} map {
memberId = cms_organizationalunits_person_map.person_id;
}
}
query getIdsOfAssociatedMembersOfSciOrganization {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :organization
and cms_organizationalunits_person_map.status = 'associated'
} map {
memberId = cms_organizationalunits_person_map.personId;
}
}
query getIdsOfFormerMembersOfSciOrganization {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :organization
and (cms_organizationalunits_person_map.status = 'former' or cms_organizationalunits_person_map.status = 'associatedFormer')
} map {
memberId = cms_organizationalunits_person_map.personId;
}
}
query getIdsOfProjectsOfSciOrganization {
BigDecimal projectId;
do {
select ct_sciorga_organizations_projects_map.project_id
from ct_sciorga_organizations_projects_map
where ct_sciorga_organizations_projects_map.organization_id = :organization
} map {
projectId = ct_sciorga_organizations_projects_map.project_id;
}
}
query getIdsOfOngoingProjectsOfSciOrganization {
BigDecimal projectId;
do {
select ct_sciorga_projects.project_id
from ct_sciorga_organizations_projects_map
join ct_sciorga_projects on ct_sciorga_organizations_projects_map.project_id = ct_sciorga_projects.project_id
where ct_sciorga_organizations_projects_map.organization_id = :organization and ct_sciorga_projects.projectend >= ':today'
} map {
projectId = ct_sciorga_projects.project_id;
}
}
query getIdsOfFinishedProjectsOfSciOrganization {
BigDecimal projectId;
do {
select ct_sciorga_projects.project_id
from ct_sciorga_organizations_projects_map
join ct_sciorga_projects on ct_sciorga_organizations_projects_map.project_id = ct_sciorga_projects.project_id
where ct_sciorga_organizations_projects_map.organization_id = :organization and ct_sciorga_projects.projectend < ':today'
} map {
projectId = ct_sciorga_projects.project_id;
}
}
query getIdsOfPublicationLinksOfSciOrganization {
BigDecimal linkId;
do {
select cms_related_links.related_link_id
from cms_related_links
where cms_related_links.owner_id = :organization
and cms_related_links.link_list_name = 'SciOrganizationPublications'
} map {
linkId = cms_related_links.related_link_id;
}
}

View File

@ -1,119 +0,0 @@
model com.arsdigita.cms.contenttypes;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.cms.*;
object type SciProject extends GenericOrganizationalUnit {
Date[0..1] projectbegin = ct_sciorga_projects.projectbegin DATE;
Date[0..1] projectend = ct_sciorga_projects.projectend DATE;
String[0..1] projectShortDesc = ct_sciorga_projects.shortdesc VARCHAR(500);
String[0..1] projectDescription = ct_sciorga_projects.description CLOB;
String[0..1] funding = ct_sciorga_projects.funding CLOB;
String[0..1] fundingVolume = ct_sciorga_projects.funding_volume VARCHAR(128);
reference key ( ct_sciorga_projects.project_id );
}
association {
SciProject[0..n] superProject = join ct_sciorga_projects.project_id
to ct_sciorga_projects_subprojects_map.subproject_id,
join ct_sciorga_projects_subprojects_map.project_id
to ct_sciorga_projects.project_id;
SciProject[0..n] subProjects = join ct_sciorga_projects.project_id
to ct_sciorga_projects_subprojects_map.project_id,
join ct_sciorga_projects_subprojects_map.subproject_id
to ct_sciorga_projects.project_id;
Integer[0..1] subProjectOrder = ct_sciorga_projects_subprojects_map.subprojectorder INTEGER;
}
query getIdsOfContactsOfSciProject {
BigDecimal contactId;
do {
select cms_organizationalunits_contact_map.contact_id
from cms_organizationalunits_contact_map
where cms_organizationalunits_contact_map.organizationalunit_id = :project
} map {
contactId = cms_organizationalunits_contact_map.contact_id;
}
}
query getIdsOfSubProjectsOfSciProject {
BigDecimal projectId;
do {
select ct_sciorga_projects_subprojects_map.subproject_id
from ct_sciorga_projects_subprojects_map
where ct_sciorga_projects_subprojects_map.project_id = :project
} map {
projectId = ct_sciorga_projects_subprojects_map.project_id;
}
}
query getIdsOfMembersOfSciProject {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :project
} map {
memberId = cms_organizationalunits_person_map.person_id;
}
}
query getIdsOfActiveMembersOfSciProject {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :project
and cms_organizationalunits_person_map.status = 'active'
} map {
memberId = cms_organizationalunits_person_map.person_id;
}
}
query getIdsOfAssociatedMembersOfSciProject {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :project
and cms_organizationalunits_person_map.status = 'associated'
} map {
memberId = cms_organizationalunits_person_map.personId;
}
}
query getIdsOfFormerMembersOfSciProject {
BigDecimal memberId;
do {
select cms_organizationalunits_person_map.cms_persons.person_id
from cms_organizationalunits_person_map
where cms_organizationalunits_person_map.organizationalunit_id = :project
and (cms_organizationalunits_person_map.status = 'former' or cms_organizationalunits_person_map.status = 'associatedFormer')
} map {
memberId = cms_organizationalunits_person_map.personId;
}
}
query getIdsOfPublicationLinksOfSciProject {
BigDecimal linkId;
do {
select cms_related_links.related_link_id
from cms_related_links
where cms_related_links.owner_id = :project
and cms_related_links.link_list_name = 'SciProjectPublications'
} map {
linkId = cms_related_links.related_link_id;
}
}

View File

@ -1,4 +0,0 @@
begin;
\i ddl/postgres/create.sql
\i ddl/postgres/deferred.sql
end;

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ctd:content-types xmlns:ctd="http://xmlns.redhat.com/cms/content-types"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.redhat.com/cms/content-types content-types.xsd">
<ctd:content-type
label="SciDepartment"
description="Base type for departments of scientific organizations"
objectType="com.arsdigita.cms.contenttypes.SciDepartment"
classname="com.arsdigita.cms.contenttypes.SciDepartment">
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
<ctd:authoring-step
labelKey="sciorganization.ui.department.properties.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="publications.ui.publication_properties.title.description"
descriptionBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentPropertiesStep"
ordering="1"/>
<ctd:authoring-step
labelKey="sciorganization.ui.department.members"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.department.members.description.title"
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentMemberStep"
ordering="2"/>
<ctd:authoring-step
labelKey="sciorganization.ui.department.subdepartments"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.department.subdepartments.description.title"
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentSubDepartmentsStep"
ordering="3"/>
<ctd:authoring-step
labelKey="sciorganization.ui.department.projects"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.department.projects.description.title"
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentProjectsStep"
ordering="4"/>
<!--<ctd:authoring-step
labelKey="sciorganization.ui.department.publications"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.department.publications.description.title"
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentPublicationsStep"
ordering="5"/> -->
<ctd:authoring-step
labelKey="sciorganization.ui.department.description.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.department.description.title"
component="com.arsdigita.cms.contenttypes.ui.SciDepartmentDescriptionStep"
ordering="5"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
</ctd:authoring-kit>
</ctd:content-type>
</ctd:content-types>

View File

@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ctd:content-types xmlns:ctd="http://xmlns.redhat.com/cms/content-types"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.redhat.com/cms/content-types content-types.xsd">
<ctd:content-type
label="SciMember"
description="Base type for members of scientific orgnizations"
objectType="com.arsdigita.cms.contenttypes.SciMember"
classname="com.arsdigita.cms.contenttypes.SciMember">
<ctd:authoring-kit createComponent="com.arsdigita.cms.contenttypes.ui.GenericPersonCreate">
<ctd:authoring-step
labelKey="cms.contenttypes.shared.basic_properties.title"
labelBundle="com.arsdigita.cms.CMSResources"
descriptionKey="cms.contenttypes.shared.basic_properties.description"
descriptionBundle="com.arsdigita.cms.CMSResources"
component="com.arsdigita.cms.contenttypes.ui.SciMemberPropertiesStep"
ordering="1"/>
<ctd:authoring-step
labelKey="person.authoring.contact_properties.title"
labelBundle="com.arsdigita.cms.contenttypes.ContenttypesResources"
descriptionKey="person.authoring.contact_properties.description"
descriptionBundle="com.arsdigita.cms.contenttypes.ContenttypesResources"
component="com.arsdigita.cms.contenttypes.ui.GenericPersonContactPropertiesStep"
ordering="2"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
</ctd:authoring-kit>
</ctd:content-type>
</ctd:content-types>

View File

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ctd:content-types xmlns:ctd="http://xmlns.redhat.com/cms/content-types"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.redhat.com/cms/content-types content-types.xsd">
<ctd:content-type
label="SciOrganization"
description="Base type for scientific orgnizations"
objectType="com.arsdigita.cms.contenttypes.SciOrganization"
classname="com.arsdigita.cms.contenttypes.SciOrganization">
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
<ctd:authoring-step
labelKey="sciorganization.ui.organization.properties.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="publications.ui.publication_properties.title.description"
descriptionBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
component="com.arsdigita.cms.contenttypes.ui.SciOrganizationPropertiesStep"
ordering="1"/>
<ctd:authoring-step
labelKey="sciorganization.ui.organization_members"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.organization_members.title.description"
component="com.arsdigita.cms.contenttypes.ui.SciOrganizationMemberStep"
ordering="2"/>
<ctd:authoring-step
labelKey="sciorganization.ui.organization.departments"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.organization.departments.description"
component="com.arsdigita.cms.contenttypes.ui.SciOrganizationDepartmentsStep"
ordering="3"/>
<ctd:authoring-step
labelKey="sciorganization.ui.organization.projects"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.organization.projects.description"
component="com.arsdigita.cms.contenttypes.ui.SciOrganizationProjectsStep"
ordering="4"/>
<ctd:authoring-step
labelKey="sciorganization.ui.organization.description.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.organization_description.title.description"
component="com.arsdigita.cms.contenttypes.ui.SciOrganizationDescriptionStep"
ordering="5"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
</ctd:authoring-kit>
</ctd:content-type>
</ctd:content-types>

View File

@ -1,49 +0,0 @@
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:define="/WEB-INF/bebop-define.tld"
xmlns:show="/WEB-INF/bebop-show.tld"
version="1.2">
<jsp:directive.page import="com.arsdigita.dispatcher.DispatcherHelper"/>
<jsp:directive.page import="com.arsdigita.bebop.parameters.BigDecimalParameter"/>
<jsp:directive.page import="com.arsdigita.navigation.Navigation"/>
<jsp:directive.page import="com.arsdigita.navigation.cms.CMSDataCollectionDefinition"/>
<jsp:directive.page import="com.arsdigita.navigation.cms.CMSDataCollectionRenderer"/>
<jsp:scriptlet>
long age = Navigation.getConfig().getIndexPageCacheLifetime();
if (age == 0) {
DispatcherHelper.cacheDisable(response);
} else {
DispatcherHelper.cacheForWorld(response, (int)age);
}
</jsp:scriptlet>
<define:page name="defaultItemPage" application="navigation"
title="Navigation" cache="true">
<define:component name="greetingItem"
classname="com.arsdigita.navigation.ui.GreetingItem"/>
<define:component name="categoryPath"
classname="com.arsdigita.navigation.ui.category.Path"/>
<define:component name="categoryMenu"
classname="com.arsdigita.navigation.ui.category.Menu"/>
<define:component name="itemList"
classname="com.arsdigita.navigation.ui.object.SimpleObjectList"/>
<define:component name="assignedTerms"
classname="com.arsdigita.navigation.ui.CategoryIndexAssignedTerms"/>
<define:component name="itemXML"
classname="com.arsdigita.cms.dispatcher.SciOrganizationDescriptionPanel"/>
<define:component name="assignedTerms"
classname="com.arsdigita.navigation.ui.CategoryIndexAssignedTerms"/>
</define:page>
<show:all/>
</jsp:root>

View File

@ -1,66 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ctd:content-types xmlns:ctd="http://xmlns.redhat.com/cms/content-types"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.redhat.com/cms/content-types content-types.xsd">
<ctd:content-type
label="SciProject"
description="Projects of scientific organizations."
objectType="com.arsdigita.cms.contenttypes.SciProject"
classname="com.arsdigita.cms.contenttypes.SciProject">
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
<ctd:authoring-step
labelKey="sciorganization.ui.project_properties.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.project_properties.title"
descriptionBundle="com.arsdigita.cms.contenttypes.ui.SciProjectResources"
component="com.arsdigita.cms.contenttypes.ui.SciProjectPropertiesStep"
ordering="1"/>
<ctd:authoring-step
labelKey="sciorganization.ui.project.members"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.project.members.description"
component="com.arsdigita.cms.contenttypes.ui.SciProjectMemberStep"
ordering="2"/>
<ctd:authoring-step
labelKey="sciorganization.ui.project.subprojects"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.project.subprojects"
component="com.arsdigita.cms.contenttypes.ui.SciProjectSubprojectsStep"
ordering="3"/>
<ctd:authoring-step
labelKey="sciorganization.ui.project.departments"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.project.departments"
component="com.arsdigita.cms.contenttypes.ui.SciProjectDepartmentsStep"
ordering="4"/>
<!--<ctd:authoring-step
labelKey="sciorganization.ui.project.publications"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.project.publications"
component="com.arsdigita.cms.contenttypes.ui.SciProjectPublicationsStep"
ordering="5"/> -->
<ctd:authoring-step
labelKey="sciorganization.ui.project_description.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"
descriptionKey="sciorganization.ui.project_description.title"
component="com.arsdigita.cms.contenttypes.ui.SciProjectDescriptionStep"
ordering="5"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
</ctd:authoring-kit>
</ctd:content-type>
</ctd:content-types>

View File

@ -1,44 +0,0 @@
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:define="/WEB-INF/bebop-define.tld"
xmlns:show="/WEB-INF/bebop-show.tld"
version="1.2">
<jsp:directive.page
import="com.arsdigita.navigation.NavigationModel,
com.arsdigita.navigation.cms.CMSNavigationModel"/>
<jsp:declaration>
NavigationModel model = new CMSNavigationModel();
</jsp:declaration>
<define:page name="itemPage" application="content-section"
title="APLAWS" cache="false">
<define:component name="categoryPath"
classname="com.arsdigita.navigation.ui.category.Path"/>
<jsp:scriptlet>
((com.arsdigita.navigation.ui.category.Path)categoryPath)
.setModel(model);
</jsp:scriptlet>
<define:component name="categoryMenu"
classname="com.arsdigita.navigation.ui.category.Menu"/>
<jsp:scriptlet>
((com.arsdigita.navigation.ui.category.Menu)categoryMenu)
.setModel(model);
</jsp:scriptlet>
<define:component name="itemXML"
classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
<define:component name="orgaXML"
classname="com.arsdigita.cms.contenttypes.ui.SciDepartmentPanel"/>
<define:component name="relatedItems"
classname="com.arsdigita.lnavigation.ui.RelatedItems"/>
<define:component name="assignedTerms"
classname="com.arsdigita.bundle.ui.AssignedItemTerms"/>
</define:page>
<show:all/>
</jsp:root>

View File

@ -1,44 +0,0 @@
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:define="/WEB-INF/bebop-define.tld"
xmlns:show="/WEB-INF/bebop-show.tld"
version="1.2">
<jsp:directive.page
import="com.arsdigita.navigation.NavigationModel,
com.arsdigita.navigation.cms.CMSNavigationModel"/>
<jsp:declaration>
NavigationModel model = new CMSNavigationModel();
</jsp:declaration>
<define:page name="itemPage" application="content-section"
title="APLAWS" cache="false">
<define:component name="categoryPath"
classname="com.arsdigita.navigation.ui.category.Path"/>
<jsp:scriptlet>
((com.arsdigita.navigation.ui.category.Path)categoryPath)
.setModel(model);
</jsp:scriptlet>
<define:component name="categoryMenu"
classname="com.arsdigita.navigation.ui.category.Menu"/>
<jsp:scriptlet>
((com.arsdigita.navigation.ui.category.Menu)categoryMenu)
.setModel(model);
</jsp:scriptlet>
<define:component name="itemXML"
classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
<define:component name="orgaXML"
classname="com.arsdigita.cms.contenttypes.ui.SciOrganizationPanel"/>
<define:component name="relatedItems"
classname="com.arsdigita.navigation.ui.RelatedItems"/>
<define:component name="assignedTerms"
classname="com.arsdigita.bundle.ui.AssignedItemTerms"/>
</define:page>
<show:all/>
</jsp:root>

View File

@ -1,44 +0,0 @@
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:define="/WEB-INF/bebop-define.tld"
xmlns:show="/WEB-INF/bebop-show.tld"
version="1.2">
<jsp:directive.page
import="com.arsdigita.navigation.NavigationModel,
com.arsdigita.navigation.cms.CMSNavigationModel"/>
<jsp:declaration>
NavigationModel model = new CMSNavigationModel();
</jsp:declaration>
<define:page name="itemPage" application="content-section"
title="APLAWS" cache="false">
<define:component name="categoryPath"
classname="com.arsdigita.navigation.ui.category.Path"/>
<jsp:scriptlet>
((com.arsdigita.navigation.ui.category.Path)categoryPath)
.setModel(model);
</jsp:scriptlet>
<define:component name="categoryMenu"
classname="com.arsdigita.navigation.ui.category.Menu"/>
<jsp:scriptlet>
((com.arsdigita.navigation.ui.category.Menu)categoryMenu)
.setModel(model);
</jsp:scriptlet>
<define:component name="itemXML"
classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
<define:component name="orgaXML"
classname="com.arsdigita.cms.contenttypes.ui.SciProjectPanel"/>
<define:component name="relatedItems"
classname="com.arsdigita.navigation.ui.RelatedItems"/>
<define:component name="assignedTerms"
classname="com.arsdigita.bundle.ui.AssignedItemTerms"/>
</define:page>
<show:all/>
</jsp:root>

View File

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xrd:adapters
xmlns:xrd="http://xmlns.redhat.com/schemas/waf/xml-renderer-rules"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://rhea.redhat.com/schemas/waf/xml-renderer-rules xml-renderer-rules.xsd">
<!--
Extend adapter for ContentItemPanel to also output the associated objects.
The default properties for BaseContact are left as is and are inherited from ContentPage
-->
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciDepartment" extends="com.arsdigita.cms.ContentPage">
<xrd:attributes rule="exclude">
<xrd:property name="/object/departmentDescription"/>
</xrd:attributes>
<!--<xrd:associations rule="include">
<xrd:property name="/object/addendum"/>
<xrd:property name="/object/contacts"/>
<xrd:property name="/object/contacts/person"/>
<xrd:property name="/object/contacts/address"/>
<xrd:property name="/object/contacts/contactentries"/>
<xrd:property name="/object/subDepartments"/>
<xrd:property name="/object/subDepartments/projects"/>
<xrd:property name="/object/subDepartments/contacts"/>
<xrd:property name="/object/subDepartments/contacts/address"/>
<xrd:property name="/object/subDepartments/contacts/contactentries"/>
<xrd:property name="/object/projects"/>
<xrd:property name="/object/projects/persons"/>
<xrd:property name="/object/persons"/>
<xrd:property name="/object/persons/contacts"/>
<xrd:property name="/object/persons/contacts/address"/>
<xrd:property name="/object/persons/contacts/contactentries"/>
</xrd:associations>-->
</xrd:adapter>
</xrd:context>
</xrd:adapters>

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xrd:adapters
xmlns:xrd="http://xmlns.redhat.com/schemas/waf/xml-renderer-rules"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://rhea.redhat.com/schemas/waf/xml-renderer-rules xml-renderer-rules.xsd">
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciMember"
extends="com.arsdigita.cms.ContentPage">
<xrd:attributes rule="exclude">
<xrd:property name="/object/birthdate"/>
<xrd:property name="/object/gender"/>
</xrd:attributes>
<xrd:associations rule="include">
<xrd:property name="/object/contacts"/>
<xrd:property name="/object/contacts/contactentries"/>
<xrd:property name="/object/contacts/address"/>
<xrd:property name="/object/organizationalunit"/>
</xrd:associations>
</xrd:adapter>
</xrd:context>
</xrd:adapters>

View File

@ -1,37 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xrd:adapters
xmlns:xrd="http://xmlns.redhat.com/schemas/waf/xml-renderer-rules"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://rhea.redhat.com/schemas/waf/xml-renderer-rules xml-renderer-rules.xsd">
<!--
Extend adapter for ContentItemPanel to also output the associated objects.
The default properties for BaseContact are left as is and are inherited from ContentPage
-->
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciOrganization"
extends="com.arsdigita.cms.ContentPage">
<xrd:attributes rule="exclude">
<xrd:property name="/object/organizationDescription"/>
</xrd:attributes>
<!--<xrd:associations rule="include">
<xrd:property name="/object/addendum"/>
<xrd:property name="/object/contacts"/>
<xrd:property name="/object/contacts/person"/>
<xrd:property name="/object/contacts/address"/>
<xrd:property name="/object/contacts/contactentries"/>
<xrd:property name="/object/departments"/>
<xrd:property name="/object/departments/persons"/>
<xrd:property name="/object/departments/persons/contacts"/>
<xrd:property name="/object/departments/persons/contacts/address"/>
<xrd:property name="/object/departments/persons/contacts/contactentries"/>
<xrd:property name="/object/projects"/>
<xrd:property name="/object/projects/persons"/>
<xrd:property name="/object/persons"/>
<xrd:property name="/object/persons/contacts"/>
<xrd:property name="/object/persons/contacts/address"/>
<xrd:property name="/object/persons/contacts/contactentries"/>
</xrd:associations>-->
</xrd:adapter>
</xrd:context>
</xrd:adapters>

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xrd:adapters
xmlns:xrd="http://xmlns.redhat.com/schemas/waf/xml-renderer-rules"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://rhea.redhat.com/schemas/waf/xml-renderer-rules xml-renderer-rules.xsd">
<!--
Extend adapter for ContentItemPanel to also output the associated objects.
The default properties for BaseContact are left as is and are inherited from ContentPage
-->
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciProject" extends="com.arsdigita.cms.ContentPage">
<xrd:attributes rule="exclude">
<xrd:property name="/object/projectDescription"/>
</xrd:attributes>
<!--<xrd:associations rule="include">
<xrd:property name="/object/contacts"/>
<xrd:property name="/object/persons"/>
</xrd:associations>-->
</xrd:adapter>
</xrd:context>
<xrd:context name="com.arsdigita.cms.contenttypes.SciProjectListXmlGenerator">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciProject" extends="com.arsdigita.cms.ContentPage">-->
<!--<xrd:attributes rule="exclude">
<xrd:property name="/object/projectDescription"/>
</xrd:attributes>-->
<xrd:associations rule="include">
<xrd:property name="/object/contacts"/>
<xrd:property name="/object/persons"/>
</xrd:associations>
</xrd:adapter>
</xrd:context>
</xrd:adapters>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<registry>
<config class="com.arsdigita.cms.contenttypes.SciOrganizationConfig"
storage="ccm-sci-types-organization/sciorganization.properties"/>
</registry>

View File

@ -1,26 +0,0 @@
<load>
<requires>
<table name="inits"/>
<table name="acs_objects"/>
<table name="cms_items"/>
<table name="cms_related_links"/>
<initializer class="com.arsdigita.cms.Initializer"/>
</requires>
<provides>
<table name="ct_sciorga_organizations"/>
<table name="ct_sciorga_departments"/>
<table name="ct_sciorga_projects"/>
<table name="ct_sciorga_members"/>
<initializer class="com.arsdigita.cms.contenttypes.SciOrganizationInitializer"/>
<initializer class="com.arsdigita.cms.contenttypes.SciDepartmentInitializer"/>
<initializer class="com.arsdigita.cms.contenttypes.SciProjectInitializer"/>
<initializer class="com.arsdigita.cms.contenttypes.SciMemberInitializer"/>
</provides>
<scripts>
<schema directory="ccm-sci-types-organization"/>
<data class="com.arsdigita.cms.contenttypes.SciOrganizationLoader"/>
<data class="com.arsdigita.cms.contenttypes.SciDepartmentLoader"/>
<data class="com.arsdigita.cms.contenttypes.SciProjectLoader"/>
<data class="com.arsdigita.cms.contenttypes.SciMemberLoader"/>
</scripts>
</load>

View File

@ -1,620 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.util.Assert;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.log4j.Logger;
/**
* <p>
* A class for representing departments of an organization. Adds two
* associations to {@link GenericOrganizationalUnit}:
* </p>
* <ul>
* <li>Subdepartments</li>
* <li>Projects</li>
* </ul>
* <p>
* The <em>subdepartments</em> association links one instance of this class
* with another.
* The <em>projects</em> association links an department with projects.
* </p>
* <p>
* Also, there are two additional fields:
* </p>
* <ul>
* <li>shortDescription</li>
* <li>description</li>
* </ul>
* <p>
* <em>shortDescription</em> takes a short text (maximum length 500 characters)
* about the department. For more detailed description, the <em>description</em>
* field can be used.
* </p>
* <p>
* There is an
* <a href="doc-files/ccm-sci-types-organization_entities.png">UML digram</a>
* with an overview of the content types and their associations. Please not that
* the diagram show a design sketch and not the actually implemented classes.
* </p>
*
* @author Jens Pelzetter
* @see GenericOrganizationalUnit
* @see SciOrganization
* @see SciProject
*/
public class SciDepartment extends GenericOrganizationalUnit {
private static final Logger logger = Logger.getLogger(SciDepartment.class);
public static final String DEPARTMENT_SHORT_DESCRIPTION =
"departmentShortDescription";
public static final String DEPARTMENT_DESCRIPTION = "departmentDescription";
public static final String ORGANIZATION = "organization";
public static final String SUPER_DEPARTMENT = "superDepartment";
public static final String SUBDEPARTMENTS = "subDepartments";
public static final String SUBDEPARTMENT_ORDER = "subDepartmentOrder";
public static final String PROJECTS = "projects";
public static final String PROJECT_ORDER = "projectOrder";
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.SciDepartment";
private static final SciOrganizationConfig s_config =
new SciOrganizationConfig();
static {
logger.debug("Static initalizer starting...");
s_config.load();
logger.debug("Static initalizer finished.");
}
public enum MemberStatus {
ALL,
ACTIVE,
ASSOCIATED,
FORMER
}
public enum ProjectStatus {
ALL,
ONGOING,
FINISHED
}
public SciDepartment() {
this(BASE_DATA_OBJECT_TYPE);
}
public SciDepartment(BigDecimal id) throws DataObjectNotFoundException {
this(new OID(BASE_DATA_OBJECT_TYPE, id));
}
public SciDepartment(OID oid) throws DataObjectNotFoundException {
super(oid);
}
public SciDepartment(DataObject obj) {
super(obj);
}
public SciDepartment(String type) {
super(type);
}
public static final SciOrganizationConfig getConfig() {
return s_config;
}
public String getDepartmentShortDescription() {
return (String) get(DEPARTMENT_SHORT_DESCRIPTION);
}
public void setDepartmentShortDescription(String description) {
set(DEPARTMENT_SHORT_DESCRIPTION, description);
}
public String getDepartmentDescription() {
return (String) get(DEPARTMENT_DESCRIPTION);
}
public void setDepartmentDescription(String description) {
set(DEPARTMENT_DESCRIPTION, description);
}
public SciDepartment getSuperDepartment() {
/*This is some sort of hack because if we define the
* relation in PDL with a multiplicity of 0..1 for the super department
* part, CCM crashes when trying to publish the item. So we have to
* define both parts of the association with 0..n in PDL. But we don't
* want more than one superior department per department. So we are
* retrieving the data collection and get the first element of it, and
* return this.
*/
DataCollection collection;
collection = (DataCollection) get(SUPER_DEPARTMENT);
if (0 == collection.size()) {
return null;
} else {
DataObject dobj;
collection.next();
dobj = collection.getDataObject();
collection.close();
return (SciDepartment) DomainObjectFactory.newInstance(dobj);
}
}
public void setSuperDepartment(SciDepartment department) {
/* Similar hack as in getSuperDepartment() above. Here, we are
* retrieving the data collection, removing the first (and only item)
* and put the new one in it.
*
*/
SciDepartment oldSuperDepartment;
oldSuperDepartment = getSuperDepartment();
if (oldSuperDepartment != null) {
remove(SUPER_DEPARTMENT, oldSuperDepartment);
}
if (null != department) {
Assert.exists(department, SciDepartment.class);
DataObject link = add(SUPER_DEPARTMENT, department);
link.set(SUBDEPARTMENT_ORDER,
Integer.valueOf((int) department.getSubDepartments().size()));
link.save();
}
}
/*public boolean hasSuperDepartment() {
}*/
public SciOrganization getOrganization() {
DataCollection collection;
collection = (DataCollection) get(ORGANIZATION);
if (0 == collection.size()) {
return null;
} else {
DataObject dobj;
collection.next();
dobj = collection.getDataObject();
collection.close();
return (SciOrganization) DomainObjectFactory.newInstance(dobj);
}
}
public void setOrganization(SciOrganization orga) {
SciOrganization oldOrganization;
oldOrganization = getOrganization();
if (oldOrganization != null) {
remove(ORGANIZATION, oldOrganization);
}
if (null != orga) {
Assert.exists(orga, SciOrganization.class);
DataObject link = add(ORGANIZATION, orga);
link.set(SciOrganization.DEPARTMENT_ORDER,
Integer.valueOf((int) orga.getDepartments().size()));
link.save();
}
}
public SciDepartmentSubDepartmentsCollection getSubDepartments() {
return new SciDepartmentSubDepartmentsCollection(
(DataCollection) get(SUBDEPARTMENTS));
}
public void addSubDepartment(SciDepartment subDepartment) {
Assert.exists(subDepartment, SciDepartment.class);
DataObject link = add(SUBDEPARTMENTS, subDepartment);
link.set(SUBDEPARTMENT_ORDER, Integer.valueOf((int) getSubDepartments().
size()));
link.save();
}
public void removeSubDepartment(SciDepartment subDepartment) {
Assert.exists(subDepartment, SciDepartment.class);
remove(SUBDEPARTMENTS, subDepartment);
}
public SciDepartmentProjectsCollection getProjects() {
return new SciDepartmentProjectsCollection(
(DataCollection) get(PROJECTS));
}
public void addProject(SciProject project) {
Assert.exists(project, SciProject.class);
DataObject link = add(PROJECTS, project);
link.set(PROJECT_ORDER,
Integer.valueOf((int) getProjects().size()));
link.set(SciProject.DEPARTMENTS_ORDER,
Integer.valueOf((int) project.getDepartments().size()));
link.save();
}
public void removeProject(SciProject project) {
Assert.exists(project, SciProject.class);
remove(PROJECTS, project);
}
@Override
public boolean hasContacts() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfContactsOfSciDepartment");
query.setParameter("department", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}
public boolean hasSubDepartments() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
query.setParameter("department", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}
/**
*
* @param merge Should I also look into the departments and return true
* if the organization or at least one of the departments has members?
* @return
*/
public boolean hasMembers(final boolean merge, final MemberStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfSciDepartment";
break;
case ACTIVE:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfActiveMembersOfSciDepartment";
break;
case ASSOCIATED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfAssociatedMembersOfSciDepartment";
break;
case FORMER:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFormerMembersOfSciDepartment";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("department", getID());
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery departmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
departmentsQuery.setParameter("department", getID());
if (query.size() > 0) {
BigDecimal departmentId;
boolean result = false;
while (departmentsQuery.next()) {
departmentId = (BigDecimal) departmentsQuery.get(
"subDepartmentId");
result = hasMembers(departmentId, merge, status);
if (result) {
break;
}
}
departmentsQuery.close();
return result;
} else {
departmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
private boolean hasMembers(final BigDecimal departmentId,
final boolean merge,
final MemberStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfSciDepartment";
break;
case ACTIVE:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfActiveMembersOfSciDepartment";
break;
case ASSOCIATED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfAssociatedMembersOfDepartment";
break;
case FORMER:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFormerMembersOfSciDepartment";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("department", departmentId);
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery subDepartmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
subDepartmentsQuery.setParameter("department", departmentId);
if (query.size() > 0) {
BigDecimal subDepartmentId;
boolean result = false;
while (subDepartmentsQuery.next()) {
subDepartmentId = (BigDecimal) subDepartmentsQuery.get(
"subDepartmentId");
result = hasMembers(subDepartmentId, merge, status);
if (result) {
break;
}
}
subDepartmentsQuery.close();
return result;
} else {
subDepartmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
public boolean hasProjects(final boolean merge,
final ProjectStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfProjectsOfSciDepartment";
break;
case ONGOING:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfOngoingProjectsOfSciDepartment";
break;
case FINISHED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFinishedProjectsOfSciDepartment";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("department", getID());
if (status != ProjectStatus.ALL) {
Calendar today = new GregorianCalendar();
query.setParameter("today",
String.format("%d-%02d-%02d",
today.get(Calendar.YEAR),
today.get(Calendar.MONTH) + 1,
today.get(Calendar.DAY_OF_MONTH)));
}
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery departmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
departmentsQuery.setParameter("department", getID());
if (departmentsQuery.size() > 0) {
BigDecimal departmentId;
boolean result = false;
while (departmentsQuery.next()) {
departmentId = (BigDecimal) departmentsQuery.get(
"subDepartmentId");
result = hasProjects(departmentId, merge, status);
if (result) {
break;
}
}
departmentsQuery.close();
return result;
} else {
departmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
private boolean hasProjects(final BigDecimal departmentId,
final boolean merge,
final ProjectStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfProjectsOfSciDepartment";
break;
case ONGOING:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfOngoingProjectsOfSciDepartment";
break;
case FINISHED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFinishedProjectsOfSciDepartment";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("department", departmentId);
if (status != ProjectStatus.ALL) {
Calendar today = new GregorianCalendar();
query.setParameter("today",
String.format("%d-%02d-%02d",
today.get(Calendar.YEAR),
today.get(Calendar.MONTH) + 1,
today.get(Calendar.DAY_OF_MONTH)));
}
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery subDepartmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
subDepartmentsQuery.setParameter("department", departmentId);
if (query.size() > 0) {
BigDecimal subDepartmentId;
boolean result = false;
while (subDepartmentsQuery.next()) {
subDepartmentId = (BigDecimal) subDepartmentsQuery.get(
"subDepartmentId");
result = hasProjects(subDepartmentId, merge, status);
if (result) {
break;
}
}
subDepartmentsQuery.close();
return result;
} else {
subDepartmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
public boolean hasPublications() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfPublicationLinksOfSciDepartment");
query.setParameter("department", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}
}

View File

@ -1,49 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import org.apache.log4j.Logger;
/**
* Initializer for {@link SciDepartment}.
*
* @author Jens Pelzetter
*/
public class SciDepartmentInitializer extends ContentTypeInitializer {
private static final Logger s_log = Logger.getLogger(
SciDepartmentInitializer.class);
public SciDepartmentInitializer() {
super("empty.pdl.mf", SciDepartment.BASE_DATA_OBJECT_TYPE);
}
@Override
public String[] getStylesheets() {
return new String[]{
"/static/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xsl"
};
}
@Override
public String getTraversalXML() {
return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciDepartment.xml";
}
}

View File

@ -1,73 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
import com.arsdigita.util.parameter.Parameter;
import com.arsdigita.util.parameter.ResourceParameter;
import com.arsdigita.workflow.simple.WorkflowTemplate;
import java.io.InputStream;
/**
* Loader for {@link SciDepartment}.
*
* @author Jens Pelzetter
*/
public class SciDepartmentLoader extends AbstractContentTypeLoader {
private ResourceParameter m_template;
private static final String[] TYPES = {
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xml"
};
public SciDepartmentLoader() {
super();
m_template = new ResourceParameter(
"com.arsdigita.cms.contenttypes.SciDepartmentTemplate",
Parameter.REQUIRED,
"/WEB-INF/content-types/com/arsdigita/"
+ "cms/contenttypes/scidepartment-item.jsp");
register(m_template);
}
public String[] getTypes() {
return TYPES;
}
@Override
protected void prepareSection(final ContentSection section,
final ContentType type,
final LifecycleDefinition lifecycle,
final WorkflowTemplate workflow) {
super.prepareSection(section, type, lifecycle, workflow);
setDefaultTemplate("SciDepartment Item",
"scidepartment-item",
(InputStream) get(m_template),
section,
type,
lifecycle,
workflow);
}
}

View File

@ -1,157 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import org.apache.log4j.Logger;
/**
* Special domain collection for the projects of an department.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciProject
*/
public class SciDepartmentProjectsCollection extends DomainCollection {
public String ORDER = "projectOrder";
public String LINKORDER = "link.projectOrder";
private static final Logger s_log =
Logger.getLogger(SciDepartmentProjectsCollection.class);
public SciDepartmentProjectsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addOrder(LINKORDER);
}
public Integer getProjectOrder() {
return (Integer) m_dataCollection.get(LINKORDER);
}
public void setProjectOrder(Integer order) {
DataObject link = (DataObject) this.get("link");
link.set(ORDER, order);
}
public void swapWithNext(SciProject project) {
int currentPosition = 0;
int currentIndex = 0;
int nextIndex = 0;
s_log.debug("Searching project...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getProjectOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getProjectOrder(): %d",
getProjectOrder()));
if (this.getProject().equals(project)) {
break;
}
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided project is not "
+ "part of this collection."));
}
if (this.next()) {
nextIndex = this.getProjectOrder();
} else {
throw new IllegalArgumentException(
"The provided project is the last "
+ "in the collection, so there is no next object "
+ "to swap with.");
}
this.rewind();
while (this.getPosition() != currentPosition) {
this.next();
}
this.setProjectOrder(nextIndex);
this.next();
this.setProjectOrder(currentIndex);
this.rewind();
}
public void swapWithPrevious(SciProject project) {
int previousPosition = 0;
int previousIndex = 0;
int currentPosition = 0;
int currentIndex = 0;
s_log.debug("Searching project...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getProjectOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getProjectOrder(): %d",
getProjectOrder()));
if (this.getProject().equals(project)) {
break;
}
previousPosition = currentPosition;
previousIndex = currentIndex;
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided project is not "
+ "part of this collection."));
}
if (previousPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided project is the first one in this "
+ "collection, so there is no previous one to switch "
+ "with."));
}
this.rewind();
while (this.getPosition() != previousPosition) {
this.next();
}
this.setProjectOrder(currentIndex);
this.next();
this.setProjectOrder(previousIndex);
this.rewind();
}
public SciProject getProject() {
return new SciProject(m_dataCollection.getDataObject());
}
}

View File

@ -1,155 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import org.apache.log4j.Logger;
/**
* Special domain collection for the subdepartments of a department.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentSubDepartmentsCollection extends DomainCollection {
public String ORDER = "subDepartmentOrder";
public String LINKORDER = "link.subDepartmentOrder";
private static final Logger s_log =
Logger.getLogger(SciDepartmentSubDepartmentsCollection.class);
public SciDepartmentSubDepartmentsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addOrder(LINKORDER);
}
public Integer getSubDepartmentOrder() {
return (Integer) m_dataCollection.get(LINKORDER);
}
public void setSubDepartmentOrder(Integer order) {
DataObject link = (DataObject) this.get("link");
link.set(ORDER, order);
}
public void swapWithNext(SciDepartment department) {
int currentPosition = 0;
int currentIndex = 0;
int nextIndex = 0;
s_log.debug("Searching department...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getSubDepartmentOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getDepartmentOrder(): %d",
getSubDepartmentOrder()));
if (this.getSubDepartment().equals(department)) {
break;
}
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided department is not "
+ "part of this collection."));
}
if (this.next()) {
nextIndex = this.getSubDepartmentOrder();
} else {
throw new IllegalArgumentException(
"The provided department is the last "
+ "in the collection, so there is no next object "
+ "to swap with.");
}
this.rewind();
while (this.getPosition() != currentPosition) {
this.next();
}
this.setSubDepartmentOrder(nextIndex);
this.next();
this.setSubDepartmentOrder(currentIndex);
this.rewind();
}
public void swapWithPrevious(SciDepartment department) {
int previousPosition = 0;
int previousIndex = 0;
int currentPosition = 0;
int currentIndex = 0;
s_log.debug("Searching department...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getSubDepartmentOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getDepartmentOrder(): %d",
getSubDepartmentOrder()));
if (this.getSubDepartment().equals(department)) {
break;
}
previousPosition = currentPosition;
previousIndex = currentIndex;
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided department is not "
+ "part of this collection."));
}
if (previousPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided department is the first one in this "
+ "collection, so there is no previous one to switch "
+ "with."));
}
this.rewind();
while (this.getPosition() != previousPosition) {
this.next();
}
this.setSubDepartmentOrder(currentIndex);
this.next();
this.setSubDepartmentOrder(previousIndex);
this.rewind();
}
public SciDepartment getSubDepartment() {
return new SciDepartment(m_dataCollection.getDataObject());
}
}

View File

@ -1,143 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
/**
* A concrete class extending {@link GenericPerson}. Does not add any new
* fields, it just makes the internal type <code>GenericPerson</code> usable
* without any other modules.
*
* @author Jens Pelzetter
*/
public class SciMember extends GenericPerson {
private static final Logger logger = Logger.getLogger(SciMember.class);
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.SciMember";
private static final String ORGANIZATIONS = "organizationalunit";
private static final String DEPARTMENTS = "organizationalunit";
private static final String PROJECTS = "organizationalunit";
private static final SciOrganizationConfig s_config =
new SciOrganizationConfig();
static {
logger.debug("Static initalizer starting...");
s_config.load();
logger.debug("Static initalizer starting...");
}
public SciMember() {
this(BASE_DATA_OBJECT_TYPE);
}
public SciMember(BigDecimal id) throws DataObjectNotFoundException {
this(new OID(BASE_DATA_OBJECT_TYPE, id));
}
public SciMember(OID oid) throws DataObjectNotFoundException {
super(oid);
}
public SciMember(DataObject dobj) {
super(dobj);
}
public SciMember(String type) {
super(type);
}
public SciMemberSciOrganizationsCollection getOrganizations() {
return new SciMemberSciOrganizationsCollection((DataCollection) get(
ORGANIZATIONS));
}
public void addOrganization(SciOrganization organization,
String role,
String status) {
Assert.exists(organization, SciOrganization.class);
DataObject link = add(ORGANIZATIONS, organization);
link.set(SciMemberSciOrganizationsCollection.MEMBER_ROLE, role);
link.set(SciMemberSciOrganizationsCollection.STATUS, status);
link.save();
}
public void removeOrganization(SciOrganization organization) {
Assert.exists(organization, SciOrganization.class);
remove(ORGANIZATIONS, organization);
}
public SciMemberSciDepartmentsCollection getDepartments() {
return new SciMemberSciDepartmentsCollection((DataCollection) get(DEPARTMENTS));
}
public void addDepartment(SciDepartment department,
String role,
String status) {
Assert.exists(department, SciDepartment.class);
DataObject link = add(DEPARTMENTS, department);
link.set(SciMemberSciDepartmentsCollection.MEMBER_ROLE, role);
link.set(SciMemberSciDepartmentsCollection.STATUS, status);
link.save();
}
public void removeDepartment(SciDepartment department) {
Assert.exists(department, SciDepartment.class);
remove(DEPARTMENTS, department);
}
public SciMemberSciProjectsCollection getProjects() {
return new SciMemberSciProjectsCollection((DataCollection) get(PROJECTS));
}
public void addProject(SciProject project,
String role,
String status) {
Assert.exists(project, SciProject.class);
DataObject link = add(PROJECTS, project);
link.set(SciMemberSciDepartmentsCollection.MEMBER_ROLE, role);
link.set(SciMemberSciDepartmentsCollection.STATUS, status);
link.save();
}
public void removeProject(SciProject project) {
Assert.exists(project, SciProject.class);
remove(PROJECTS, project);
}
public static SciOrganizationConfig getConfig() {
return s_config;
}
}

View File

@ -1,45 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
/**
* Initializer for {@link SciMember}
*
* @author Jens Pelzetter
*/
public class SciMemberInitializer extends ContentTypeInitializer {
public SciMemberInitializer() {
super("empty.pdl.mf", SciMember.BASE_DATA_OBJECT_TYPE);
}
@Override
public String[] getStylesheets() {
return new String[]{
"/static/content-types/com/arsdigita/cms/contenttypes/SciMember.xsl"
};
}
@Override
public String getTraversalXML() {
return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml";
}
}

View File

@ -1,35 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
/**
* Loader for {@link SciMember}
*
* @author Jens Pelzetter
*/
public class SciMemberLoader extends AbstractContentTypeLoader {
private static final String[] TYPES = {
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciMember.xml"};
@Override
public String[] getTypes() {
return TYPES;
}
}

View File

@ -1,75 +0,0 @@
/*
* Copyright (c) 2011 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentType;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciMemberSciDepartmentsCollection extends DomainCollection {
public static final String LINK_MEMBER_ROLE = "link.role_name";
public static final String LINK_STATUS = "link.status";
public static final String MEMBER_ROLE = "role_name";
public static final String STATUS = "status";
public SciMemberSciDepartmentsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addFilter(String.format("type = '%s'",
ContentType.
findByAssociatedObjectType(SciDepartment.class.getName()).getID().
toString()));
m_dataCollection.addOrder("title");
}
public String getRoleName() {
return (String) m_dataCollection.get(LINK_MEMBER_ROLE);
}
public void setRoleName(String roleName) {
DataObject link = (DataObject) this.get("link");
link.set(MEMBER_ROLE, roleName);
}
public String getStatus() {
return (String) m_dataCollection.get(LINK_STATUS);
}
public void setStatus(String status) {
DataObject link = (DataObject) this.get("link");
link.set(STATUS, status);
}
public SciDepartment getDepartment() {
return (SciDepartment) DomainObjectFactory.newInstance(m_dataCollection.
getDataObject());
}
}

View File

@ -1,77 +0,0 @@
/*
* Copyright (c) 2011 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentType;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciMemberSciOrganizationsCollection extends DomainCollection {
public static final String LINK_MEMBER_ROLE = "link.role_name";
public static final String LINK_STATUS = "link.status";
public static final String MEMBER_ROLE = "role_name";
public static final String STATUS = "status";
public SciMemberSciOrganizationsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addFilter(String.format("type = '%s'",
ContentType.
findByAssociatedObjectType(SciOrganization.class.getName()).
getID().toString()));
m_dataCollection.addOrder("title");
}
public String getRoleName() {
return (String) m_dataCollection.get(LINK_MEMBER_ROLE);
}
public void setRoleName(String roleName) {
DataObject link = (DataObject) this.get("link");
link.set(MEMBER_ROLE, roleName);
}
public String getStatus() {
return (String) m_dataCollection.get(LINK_STATUS);
}
public void setStatus(String status) {
DataObject link = (DataObject) this.get("link");
link.set(STATUS, status);
}
public SciOrganization getOrganization() {
return (SciOrganization) DomainObjectFactory.newInstance(m_dataCollection.
getDataObject());
}
}

View File

@ -1,75 +0,0 @@
/*
* Copyright (c) 2011 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentType;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciMemberSciProjectsCollection extends DomainCollection {
public static final String LINK_MEMBER_ROLE = "link.role_name";
public static final String LINK_STATUS = "link.status";
public static final String MEMBER_ROLE = "role_name";
public static final String STATUS = "status";
public SciMemberSciProjectsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addFilter(String.format("type = '%s'",
ContentType.
findByAssociatedObjectType(SciProject.class.getName()).getID().
toString()));
m_dataCollection.addOrder("title");
}
public String getRoleName() {
return (String) m_dataCollection.get(LINK_MEMBER_ROLE);
}
public void setRoleName(String roleName) {
DataObject link = (DataObject) this.get("link");
link.set(MEMBER_ROLE, roleName);
}
public String getStatus() {
return (String) m_dataCollection.get(LINK_STATUS);
}
public void setStatus(String status) {
DataObject link = (DataObject) this.get("link");
link.set(STATUS, status);
}
public SciProject getProject() {
return (SciProject) DomainObjectFactory.newInstance(m_dataCollection.
getDataObject());
}
}

View File

@ -1,524 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.util.Assert;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.log4j.Logger;
/**
* <p>
* A class for representing departments of an organization. Adds two
* associations to {@link GenericOrganizationalUnit}:
* </p>
* <ul>
* <li>departments</li>
* <li>projects</li>
* </ul>
* <p>
* The <em>departments</em> association is used to link an organization with
* its departments. The <em>project</em> association can be used to link an
* organization with projects.
* </p>
* <p>
* Also, two fields are added. The <code>shortDescription</code> takes a string
* of 500 characters for a short description of the organization. An detailed
* description of the organization can be put into the <code>description</code>
* field.
* </p>
* <p>
* There is an
* <a href="doc-files/ccm-sci-types-organization_entities.png">UML digram</a>
* with an overview of the content types and their associations. Please not that
* the diagram show a design sketch and not the actually implemented classes.
* </p>
*
* @author Jens Pelzetter
* @see GenericOrganizationalUnit
* @see SciDepartment
* @see SciProject
*/
public class SciOrganization extends GenericOrganizationalUnit {
private static final Logger logger = Logger.getLogger(SciOrganization.class);
public static final String ORGANIZATION_SHORT_DESCRIPTION =
"organizationShortDescription";
public static final String ORGANIZATION_DESCRIPTION =
"organizationDescription";
public static final String DEPARTMENTS = "departments";
public static final String DEPARTMENT_ORDER = "departmentOrder";
public static final String PROJECTS = "projects";
public static final String PROJECT_ORDER = "projectOrder";
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.SciOrganization";
private static final SciOrganizationConfig s_config =
new SciOrganizationConfig();
static {
logger.debug("Static initalizer starting...");
s_config.load();
logger.debug("Static initalizer finished.");
}
public enum MemberStatus {
ALL,
ACTIVE,
ASSOCIATED,
FORMER
}
public enum ProjectStatus {
ALL,
ONGOING,
FINISHED
}
public SciOrganization() {
this(BASE_DATA_OBJECT_TYPE);
}
public SciOrganization(BigDecimal id) throws DataObjectNotFoundException {
this(new OID(BASE_DATA_OBJECT_TYPE, id));
}
public SciOrganization(OID oid) throws DataObjectNotFoundException {
super(oid);
}
public SciOrganization(DataObject obj) {
super(obj);
}
public SciOrganization(String type) {
super(type);
}
public static SciOrganizationConfig getConfig() {
return s_config;
}
public String getOrganizationShortDescription() {
return (String) get(ORGANIZATION_SHORT_DESCRIPTION);
}
public void setOrganizationShortDescription(String description) {
set(ORGANIZATION_SHORT_DESCRIPTION, description);
}
public String getOrganizationDescription() {
return (String) get(ORGANIZATION_DESCRIPTION);
}
@Override
public boolean hasContacts() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfContactsOfSciOrganization");
query.setParameter("organization", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}
public boolean hasDepartments() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfDepartmentsOfSciOrganization");
query.setParameter("organization", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}
/**
*
* @param merge Should I also look into the departments and return true
* if the organization or at least one of the departments has members?
* @param status
* @return
*/
public boolean hasMembers(final boolean merge, final MemberStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfSciOrganization";
break;
case ACTIVE:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfActiveMembersOfSciOrganization";
break;
case ASSOCIATED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfAssociatedMembersOfSciOrganization";
break;
case FORMER:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFormerMembersOfSciOrganization";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("organization", getID());
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery departmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfDepartmentsOfSciOrganization");
departmentsQuery.setParameter("organization", getID());
if (departmentsQuery.size() > 0) {
BigDecimal departmentId;
boolean result = false;
while (departmentsQuery.next()) {
departmentId = (BigDecimal) departmentsQuery.get(
"departmentId");
result = hasMembers(departmentId, merge, status);
if (result) {
break;
}
}
departmentsQuery.close();
return result;
} else {
departmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
private boolean hasMembers(final BigDecimal departmentId,
final boolean merge,
final MemberStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfSciDepartment";
break;
case ACTIVE:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfActiveMembersOfSciDepartment";
break;
case ASSOCIATED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfAssociatedMembersOfSciDepartment";
break;
case FORMER:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFormerMembersOfSciDepartment";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("department", departmentId);
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery subDepartmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
subDepartmentsQuery.setParameter("department", departmentId);
if (query.size() > 0) {
BigDecimal subDepartmentId;
boolean result = false;
while (subDepartmentsQuery.next()) {
subDepartmentId = (BigDecimal) subDepartmentsQuery.get(
"subDepartmentId");
result = hasMembers(subDepartmentId, merge, status);
if (result) {
break;
}
}
subDepartmentsQuery.close();
return result;
} else {
subDepartmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
public boolean hasProjects(final boolean merge,
final ProjectStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfProjectsOfSciOrganization";
break;
case ONGOING:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfOngoingProjectsOfSciOrganization";
break;
case FINISHED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFinishedProjectsOfSciOrganization";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("organization", getID());
if (status != ProjectStatus.ALL) {
Calendar today = new GregorianCalendar();
query.setParameter("today",
String.format("%d-%02d-%02d",
today.get(Calendar.YEAR),
today.get(Calendar.MONTH) + 1,
today.get(Calendar.DAY_OF_MONTH)));
}
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery departmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfDepartmentsOfSciOrganization");
departmentsQuery.setParameter("organization", getID());
if (departmentsQuery.size() > 0) {
BigDecimal departmentId;
boolean result = false;
while (departmentsQuery.next()) {
departmentId = (BigDecimal) departmentsQuery.get(
"departmentId");
result = hasProjects(departmentId, merge, status);
if (result) {
break;
}
}
departmentsQuery.close();
return result;
} else {
departmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
private boolean hasProjects(final BigDecimal departmentId,
final boolean merge,
final ProjectStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfProjectsOfSciDepartment";
break;
case ONGOING:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfOngoingProjectsOfSciDepartment";
break;
case FINISHED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFinishedProjectsOfSciDepartment";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("department", departmentId);
if (status != ProjectStatus.ALL) {
Calendar today = new GregorianCalendar();
query.setParameter("today",
String.format("%d-%02d-%02d",
today.get(Calendar.YEAR),
today.get(Calendar.MONTH) + 1,
today.get(Calendar.DAY_OF_MONTH)));
}
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery subDepartmentsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubDepartmentsOfSciDepartment");
subDepartmentsQuery.setParameter("department", departmentId);
if (subDepartmentsQuery.size() > 0) {
BigDecimal subDepartmentId;
boolean result = false;
while (subDepartmentsQuery.next()) {
subDepartmentId = (BigDecimal) subDepartmentsQuery.get(
"subDepartmentId");
result = hasProjects(subDepartmentId, merge, status);
if (result) {
break;
}
}
subDepartmentsQuery.close();
return result;
} else {
subDepartmentsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
/*public boolean hasPublications() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfPublicationLinksOfSciOrganization");
query.setParameter("organization", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}*/
public void setOrganizationDescription(String description) {
set(ORGANIZATION_DESCRIPTION, description);
}
public SciOrganizationDepartmentsCollection getDepartments() {
return new SciOrganizationDepartmentsCollection(
(DataCollection) get(DEPARTMENTS));
}
public void addDepartment(SciDepartment department) {
Assert.exists(department, SciDepartment.class);
DataObject link = add(DEPARTMENTS, department);
link.set(DEPARTMENT_ORDER,
Integer.valueOf((int) getDepartments().size()));
link.save();
}
public void removeDepartment(SciDepartment department) {
Assert.exists(department, SciDepartment.class);
remove(DEPARTMENTS, department);
}
public SciOrganizationProjectsCollection getProjects() {
return new SciOrganizationProjectsCollection(
(DataCollection) get(PROJECTS));
}
public void addProject(SciProject project) {
Assert.exists(project, SciProject.class);
DataObject link = add(PROJECTS, project);
link.set(PROJECT_ORDER, Integer.valueOf((int) getProjects().size()));
link.set(SciProject.ORGANIZATIONS_ORDER, Integer.valueOf((int) project.
getOrganizations().size()));
link.save();
}
public void removeProject(SciProject project) {
Assert.exists(project, SciProject.class);
remove(PROJECTS, project);
}
}

View File

@ -1,329 +0,0 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.runtime.AbstractConfig;
import com.arsdigita.util.parameter.BooleanParameter;
import com.arsdigita.util.parameter.Parameter;
/**
* Configuration class for the complete ccm-sci-types-organization-module.
*
* @author Jens Pelzetter
*/
public class SciOrganizationConfig extends AbstractConfig {
private final Parameter m_organizationAddPersonHide;
private final Parameter m_organizationAddDepartmentHide;
private final Parameter m_organizationAddProjectHide;
private final Parameter m_organizationAddContactHide;
private final Parameter m_organizationMembersAllInOne;
private final Parameter m_organizationMembersMerge;
private final Parameter m_organizationProjectsAllInOne;
private final Parameter m_organizationProjectsMerge;
private final Parameter m_departmentAddPersonHide;
private final Parameter m_departmentAddSubDepartmentHide;
private final Parameter m_departmentAddProjectHide;
private final Parameter m_departmentSetOrganizationHide;
private final Parameter m_departmentSetSuperDepartmentHide;
private final Parameter m_departmentAddContactHide;
private final Parameter m_departmentPublicationsHide;
private final Parameter m_projectAddPersonHide;
private final Parameter m_projectAddOrganizationHide;
private final Parameter m_projectAddDepartmentHide;
private final Parameter m_projectAddSubProjectHide;
private final Parameter m_projectSetSuperProjectHide;
private final Parameter m_projectAddContactHide;
private final Parameter m_organizationDescriptionDhtml;
private final Parameter m_departmentDescriptionDhtml;
private final Parameter m_projectDescriptionDhtml;
private final Parameter m_projectFundingHide;
private final Parameter m_projectFundingDhtml;
private final Parameter m_projectFundingVolumeHide;
private final Parameter m_projectMaterialsHide;
private final Parameter m_projectMembersAllInOne;
private final Parameter m_projectMembersMerge;
public SciOrganizationConfig() {
m_organizationAddPersonHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.add_person_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_organizationAddDepartmentHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.add_department_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_organizationAddProjectHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.add_project_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_organizationAddContactHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_organizationMembersAllInOne = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one",
Parameter.REQUIRED,
Boolean.FALSE);
m_organizationMembersMerge = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.members_merge",
Parameter.REQUIRED,
Boolean.TRUE);
m_organizationProjectsAllInOne = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one",
Parameter.REQUIRED,
Boolean.FALSE);
m_organizationProjectsMerge = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.projects_merge",
Parameter.REQUIRED,
Boolean.TRUE);
m_departmentAddPersonHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.scidepartment.add_person_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_departmentAddSubDepartmentHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide",
Parameter.REQUIRED,
Boolean.TRUE);
m_departmentAddProjectHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.scidepartment.add_project_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_departmentSetOrganizationHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.scidepartment.organization_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_departmentSetSuperDepartmentHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide",
Parameter.REQUIRED,
Boolean.TRUE);
m_departmentAddContactHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_departmentPublicationsHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.scidepartment.publications_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_projectAddPersonHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.add_person_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_projectAddOrganizationHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.add_organization_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_projectAddDepartmentHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.add_department_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_projectAddSubProjectHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide",
Parameter.REQUIRED,
Boolean.TRUE);
m_projectSetSuperProjectHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide",
Parameter.REQUIRED,
Boolean.TRUE);
m_projectAddContactHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.add_project_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_organizationDescriptionDhtml = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciorganization.description_dhtml",
Parameter.REQUIRED,
Boolean.TRUE);
m_departmentDescriptionDhtml = new BooleanParameter(
"com.arsdigita.cms.contenttypes.scidepartment.description_dhtml",
Parameter.REQUIRED,
Boolean.TRUE);
m_projectDescriptionDhtml = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.description_dhtml",
Parameter.REQUIRED,
Boolean.TRUE);
m_projectFundingHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.funding_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_projectFundingDhtml = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.funding_dhtml",
Parameter.REQUIRED,
Boolean.FALSE);
m_projectFundingVolumeHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.funding_volume_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_projectMaterialsHide = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.materials_hide",
Parameter.REQUIRED,
Boolean.FALSE);
m_projectMembersAllInOne = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.members_all_in_one",
Parameter.REQUIRED,
Boolean.TRUE);
m_projectMembersMerge = new BooleanParameter(
"com.arsdigita.cms.contenttypes.sciproject.members_merge",
Parameter.REQUIRED,
Boolean.FALSE);
register(m_organizationAddPersonHide);
register(m_organizationAddDepartmentHide);
register(m_organizationAddProjectHide);
register(m_organizationMembersAllInOne);
register(m_organizationMembersMerge);
register(m_organizationProjectsAllInOne);
register(m_organizationProjectsMerge);
register(m_departmentAddPersonHide);
register(m_departmentAddSubDepartmentHide);
register(m_departmentAddProjectHide);
register(m_departmentSetOrganizationHide);
register(m_departmentSetSuperDepartmentHide);
register(m_departmentPublicationsHide);
register(m_projectAddPersonHide);
register(m_projectAddOrganizationHide);
register(m_projectAddDepartmentHide);
register(m_projectAddSubProjectHide);
register(m_projectSetSuperProjectHide);
register(m_organizationDescriptionDhtml);
register(m_departmentDescriptionDhtml);
register(m_projectDescriptionDhtml);
register(m_organizationAddContactHide);
register(m_departmentAddContactHide);
register(m_projectAddContactHide);
register(m_projectFundingHide);
register(m_projectFundingVolumeHide);
register(m_projectFundingDhtml);
register(m_projectMaterialsHide);
register(m_projectMembersAllInOne);
register(m_projectMembersMerge);
loadInfo();
}
public final boolean getOrganizationAddPersonHide() {
return (Boolean) get(m_organizationAddPersonHide);
}
public final boolean getOrganizationAddDepartmentHide() {
return (Boolean) get(m_organizationAddDepartmentHide);
}
public final boolean getOrganizationAddProjectHide() {
return (Boolean) get(m_organizationAddProjectHide);
}
public final boolean getOrganizationAddContactHide() {
return (Boolean) get(m_organizationAddContactHide);
}
public final boolean getOrganizationMembersAllInOne() {
return (Boolean) get(m_organizationMembersAllInOne);
}
public final boolean getOrganizationMembersMerge() {
return (Boolean) get(m_organizationMembersMerge);
}
public final boolean getOrganizationProjectsAllInOne() {
return (Boolean) get(m_organizationProjectsAllInOne);
}
public final boolean getOrganizationProjectsMerge() {
return (Boolean) get(m_organizationProjectsMerge);
}
public final boolean getDepartmentAddPersonHide() {
return (Boolean) get(m_departmentAddPersonHide);
}
public final boolean getDepartmentAddSubDepartmentHide() {
return (Boolean) get(m_departmentAddSubDepartmentHide);
}
public final boolean getDepartmentAddProjectHide() {
return (Boolean) get(m_departmentAddProjectHide);
}
public final boolean getDepartmentSetOrganizationHide() {
return (Boolean) get(m_departmentSetOrganizationHide);
}
public final boolean getDepartmentSetSuperDepartmentHide() {
return (Boolean) get(m_departmentSetSuperDepartmentHide);
}
public final boolean getDepartmentAddContactHide() {
return (Boolean) get(m_departmentAddContactHide);
}
public final boolean getDepartmentPublicationsHide() {
return (Boolean) get(m_departmentPublicationsHide);
}
public final boolean getProjectAddPersonHide() {
return (Boolean) get(m_projectAddPersonHide);
}
public final boolean getProjectAddOrganizationHide() {
return (Boolean) get(m_projectAddOrganizationHide);
}
public final boolean getProjectAddDepartmentHide() {
return (Boolean) get(m_projectAddDepartmentHide);
}
public final boolean getProjectAddSubProjectHide() {
return (Boolean) get(m_projectAddSubProjectHide);
}
public final boolean getProjectSetSuperProjectHide() {
return (Boolean) get(m_projectSetSuperProjectHide);
}
public final boolean getProjectAddContactHide() {
return (Boolean) get(m_projectAddContactHide);
}
public final boolean getOrganizationDescriptionDhtml() {
return (Boolean) get(m_organizationDescriptionDhtml);
}
public final boolean getDepartmentDescriptionDhtml() {
return (Boolean) get(m_departmentDescriptionDhtml);
}
public final boolean getProjectDescriptionDhtml() {
return (Boolean) get(m_projectDescriptionDhtml);
}
public final boolean getProjectFundingHide() {
return (Boolean) get(m_projectFundingHide);
}
public final boolean getProjectFundingDhtml() {
return (Boolean) get(m_projectFundingDhtml);
}
public final boolean getProjectFundingVolumeHide() {
return (Boolean) get(m_projectFundingVolumeHide);
}
public final boolean getProjectMaterialsHide() {
return (Boolean) get(m_projectMaterialsHide);
}
public final boolean getProjectMembersAllInOne() {
return (Boolean) get(m_projectMembersAllInOne);
}
public final boolean getProjectMembersMerge() {
return (Boolean) get(m_projectMembersMerge);
}
}

View File

@ -1,144 +0,0 @@
com.arsdigita.cms.contenttypes.sciorganization.add_person_hide.title = Hide the persons add step of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.add_person_hide.purpose = Hide the persons add step of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.add_person_hide.example = false
com.arsdigita.cms.contenttypes.sciorganization.add_person_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.add_department_hide.title = Hide the department add step of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.add_department_hide.purpose = Hide the department add step of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.add_department_hide.example = false
com.arsdigita.cms.contenttypes.sciorganization.add_department_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.add_project_hide.title = Hide the project add step of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.add_project_hide.purpose = Hide the project add step of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.add_project_hide.example = false
com.arsdigita.cms.contenttypes.sciorganization.add_project_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.title = Hide the contact add step of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.purpose = Hide the contact add step of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.example = false
com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one.title = Members All-in-one
com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one.purpose = Show all members (active, associated and former) in one instead in three seprated lists
com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one.example = false
com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.members_merge.title = Merge members
com.arsdigita.cms.contenttypes.sciorganization.members_merge.purpose = Merge members from all departments and the organization into one list (or three list, for each status)
com.arsdigita.cms.contenttypes.sciorganization.members_merge.example = true
com.arsdigita.cms.contenttypes.sciorganization.members_merge.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one.title = Project All-in-one
com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one.purpose = Show all projects (ongoing and finished) in one instead of two seperated lists.
com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one.example = false
com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.projects_merge.title = Merge projects
com.arsdigita.cms.contenttypes.sciorganization.projects_merge.purpose = Merge all projects from the organization and its departments into one list (or two list for ongoing and finished projects)
com.arsdigita.cms.contenttypes.sciorganization.projects_merge.examle = true
com.arsdigita.cms.contenttypes.sciorganization.projects_merge.format = [boolean]
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.title = Hide the person add step of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.purpose = Hide the person add step of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.example = false
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.format = [boolean]
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.title = Hide the subdepartment add step of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.purpose = Hide the subdepartment add step of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.example = true
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.format = [boolean]
com.arsdigita.cms.contenttypes.scidepartment.set_organization_hide.title = Hide the organization set step of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.set_organization_hide.purpose = Hide the organization set step of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.set_organization_hide.example = false
com.arsdigita.cms.contenttypes.scidepartment.set_organization_hide.format = [boolean]
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.title = Hide the superdepartment set step of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.purpose = Hide the superdepartment set step of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.example = false
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.format = [boolean]
com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide.title = Hide the contact add step of Scidepartment
com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide.purpose = Hide the contact add step of Scidepartment
com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide.example = false
com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.add_person_hide.title = Hide the person add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.add_person_hide.purpose = Hide the person add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.add_person_hide.example = false
com.arsdigita.cms.contenttypes.sciproject.add_person_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.add_organization_hide.title = Hide the organization add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.add_organization_hide.purpose = Hide the organization add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.add_organization_hide.example = false
com.arsdigita.cms.contenttypes.sciproject.add_organization_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.add_department_hide.title = Hide the department add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.add_department_hide.purpose Hide the department add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.add_department_hide.example = false
com.arsdigita.cms.contenttypes.sciproject.add_department_hide = [boolean]
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.title = Hide the subproject add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.purpose = Hide the subproject add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.example = true
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.title = Hide the superproject add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.purpose = Hide the superprojecft add step of SciProject
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.example = true
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.description_dhtml.title = Toggles the DHTML for the description of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.description_dhtml.purpose = Toggles the DHTML for the description of SciOrganization
com.arsdigita.cms.contenttypes.sciorganization.description_dhtml.example = true
com.arsdigita.cms.contenttypes.sciorganization.description_dhtml.format = [boolean]
com.arsdigita.cms.contenttypes.scidepartment.description_dhtml.title = Toggles the DHTML for the description of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.description_dhtml.purpose = Toggles the DHTML for the description of SciDepartment
com.arsdigita.cms.contenttypes.scidepartment.description_dhtml.example = true
com.arsdigita.cms.contenttypes.scidepartment.description_dhtml = [boolean]
com.arsdigita.cms.contenttypes.sciproject.description_dhtml.title = Toggles the DHTML for the description of SciProject
com.arsdigita.cms.contenttypes.sciproject.description_dhtml.purpose = Toggles the DHTML for the description of SciProject
com.arsdigita.cms.contenttypes.sciproject.description_dhtml.example = true
com.arsdigita.cms.contenttypes.sciproject.description_dhtml.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.add_contact_hide.title = Hide the contact add step of Sciproject
com.arsdigita.cms.contenttypes.sciproject.add_contact_hide.purpose = Hide the contact add step of Sciproject
com.arsdigita.cms.contenttypes.sciproject.add_contact_hide.example = false
com.arsdigita.cms.contenttypes.sciproject.add_contact_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.funding_hide.title = Hide funding text input
com.arsdigita.cms.contenttypes.sciproject.funding_hide.purpose = Hide the funding text input
com.arsdigita.cms.contenttypes.sciproject.funding_hide.example = false
com.arsdigita.cms.contenttypes.sciproject.funding_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.funding_volume_hide.title = Hide funding_volume text input
com.arsdigita.cms.contenttypes.sciproject.funding_volume_hide.purpose = Hide the funding_volume text input
com.arsdigita.cms.contenttypes.sciproject.funding_volume_hide.example = true
com.arsdigita.cms.contenttypes.sciproject.funding_volume_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.funding_dhtml.title = Toggles the DHTML editor for funding
com.arsdigita.cms.contenttypes.sciproject.funding_dhtml.purpose = Toggles the DHTML editor for funding
com.arsdigita.cms.contenttypes.sciproject.funding_dhtml.example = false
com.arsdigita.cms.contenttypes.sciproject.funding_dhtml.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.materials_hide.title = Hides the step for linking materials with a project
com.arsdigita.cms.contenttypes.sciproject.materials_hide.purpose = Hides the step for linking materials with a project
com.arsdigita.cms.contenttypes.sciproject.materials_hide.example = false
com.arsdigita.cms.contenttypes.sciproject.materials_hide.format = [boolean]
com.arsdigita.cms.contenttypes.sciproject.members_all_in_one.title = Members All-in-one
com.arsdigita.cms.contenttypes.sciproject.members_all_in_one.purpose = Show all members (active, associated and former) in one instead in three separated lists
com.arsdigita.cms.contenttypes.sciproject.members_all_in_one.example = true
com.arsdigita.cms.contenttypes.sciproject.members_all_in_one.format = [boolean]
com.arsdigita.cms.contenttypes.sciorganization.members_merge.title = Merge members
com.arsdigita.cms.contenttypes.sciorganization.members_merge.purpose = Merge members from all subproject into one list (or three list, for each status)
com.arsdigita.cms.contenttypes.sciorganization.members_merge.example = false
com.arsdigita.cms.contenttypes.sciorganization.members_merge.format = [boolean]
com.arsdigita.cms.contenttypes.scidepartment.publications_hide.title = Hides the step for linking publications with a department
com.arsdigita.cms.contenttypes.scidepartment.publications_hide.purpose = Hides the step for linking publications with a department
com.arsdigita.cms.contenttypes.scidepartment.publications_hide.example = false
com.arsdigita.cms.contenttypes.scidepartment.publications_hide.format = [boolean]

View File

@ -1,156 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import org.apache.log4j.Logger;
/**
* Special domain collection for the departments of an organization.
*
* @author Jens Pelzetter
* @see SciOrganization
* @see SciDepartment
*/
public class SciOrganizationDepartmentsCollection extends DomainCollection {
public String ORDER = "departmentOrder";
public String LINKORDER = "link.departmentOrder";
private static final Logger s_log =
Logger.getLogger(SciOrganizationDepartmentsCollection.class);
public SciOrganizationDepartmentsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addOrder(LINKORDER);
}
public Integer getDepartmentOrder() {
return (Integer) m_dataCollection.get(LINKORDER);
}
public void setDepartmentOrder(Integer order) {
DataObject link = (DataObject) this.get("link");
link.set(ORDER, order);
}
public void swapWithNext(SciDepartment department) {
int currentPosition = 0;
int currentIndex = 0;
int nextIndex = 0;
s_log.debug("Searching department...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getDepartmentOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getDepartmentOrder(): %d",
getDepartmentOrder()));
if (this.getDepartment().equals(department)) {
break;
}
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided department is not "
+ "part of this collection."));
}
if (this.next()) {
nextIndex = this.getDepartmentOrder();
} else {
throw new IllegalArgumentException(
"The provided department is the last "
+ "in the collection, so there is no next object "
+ "to swap with.");
}
this.rewind();
while (this.getPosition() != currentPosition) {
this.next();
}
this.setDepartmentOrder(nextIndex);
this.next();
this.setDepartmentOrder(currentIndex);
this.rewind();
}
public void swapWithPrevious(SciDepartment department) {
int previousPosition = 0;
int previousIndex = 0;
int currentPosition = 0;
int currentIndex = 0;
s_log.debug("Searching department...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getDepartmentOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getDepartmentOrder(): %d",
getDepartmentOrder()));
if (this.getDepartment().equals(department)) {
break;
}
previousPosition = currentPosition;
previousIndex = currentIndex;
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided department is not "
+ "part of this collection."));
}
if (previousPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided department is the first one in this "
+ "collection, so there is no previous one to switch "
+ "with."));
}
this.rewind();
while (this.getPosition() != previousPosition) {
this.next();
}
this.setDepartmentOrder(currentIndex);
this.next();
this.setDepartmentOrder(previousIndex);
this.rewind();
}
public SciDepartment getDepartment() {
return new SciDepartment(m_dataCollection.getDataObject());
}
}

View File

@ -1,51 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import org.apache.log4j.Logger;
/**
* Initalizer for {@link SciOrganization}
*
* @author Jens Pelzetter
*/
public class SciOrganizationInitializer extends ContentTypeInitializer {
private static final Logger s_log = Logger.getLogger(
SciOrganizationInitializer.class);
public SciOrganizationInitializer() {
super("ccm-sci-types-organization.pdl.mf",
SciOrganization.BASE_DATA_OBJECT_TYPE);
}
@Override
public String[] getStylesheets() {
return new String[]{
"/static/content-types/com/arsdigita/cms/contenttypes/SciOrganization.xsl"
};
}
@Override
public String getTraversalXML() {
return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciOrganization.xml";
}
}

View File

@ -1,77 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
import com.arsdigita.util.parameter.Parameter;
import com.arsdigita.util.parameter.ResourceParameter;
import com.arsdigita.workflow.simple.WorkflowTemplate;
import java.io.InputStream;
/**
* Loader for {@link SciOrganization}
*
* @author Jens Pelzetter
*/
public class SciOrganizationLoader extends AbstractContentTypeLoader {
private ResourceParameter m_template;
public SciOrganizationLoader() {
super();
m_template = new ResourceParameter(
"com.arsdigita.cms.contenttypes.SciOrganizationTemplate",
Parameter.REQUIRED,
"/WEB-INF/content-types/com/arsdigita/"
+ "cms/contenttypes/sciorganization-item.jsp");
register(m_template);
}
private static final String[] TYPES = {
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/"
+ "SciOrganization.xml"
};
@Override
public String[] getTypes() {
return TYPES;
}
@Override
protected void prepareSection(final ContentSection section,
final ContentType type,
final LifecycleDefinition lifecycle,
final WorkflowTemplate workflow) {
super.prepareSection(section, type, lifecycle, workflow);
setDefaultTemplate("SciOrganization Item",
"sciorganization-item",
(InputStream) get(m_template),
section,
type,
lifecycle,
workflow);
}
}

View File

@ -1,157 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import org.apache.log4j.Logger;
/**
* Special domain collection for the projects of an organization.
*
* @author Jens Pelzetter
* @see SciOrganization
* @see SciProject
*/
public class SciOrganizationProjectsCollection extends DomainCollection {
public String ORDER = "projectOrder";
public String LINKORDER = "link.projectOrder";
private static final Logger s_log =
Logger.getLogger(SciOrganizationProjectsCollection.class);
public SciOrganizationProjectsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addOrder(LINKORDER);
}
public Integer getProjectOrder() {
return (Integer) m_dataCollection.get(LINKORDER);
}
public void setProjectOrder(Integer order) {
DataObject link = (DataObject) this.get("link");
link.set(ORDER, order);
}
public void swapWithNext(SciProject project) {
int currentPosition = 0;
int currentIndex = 0;
int nextIndex = 0;
s_log.debug("Searching project...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getProjectOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getProjectOrder(): %d",
getProjectOrder()));
if (this.getProject().equals(project)) {
break;
}
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided project is not "
+ "part of this collection."));
}
if (this.next()) {
nextIndex = this.getProjectOrder();
} else {
throw new IllegalArgumentException(
"The provided project is the last "
+ "in the collection, so there is no next object "
+ "to swap with.");
}
this.rewind();
while (this.getPosition() != currentPosition) {
this.next();
}
this.setProjectOrder(nextIndex);
this.next();
this.setProjectOrder(currentIndex);
this.rewind();
}
public void swapWithPrevious(SciProject project) {
int previousPosition = 0;
int previousIndex = 0;
int currentPosition = 0;
int currentIndex = 0;
s_log.debug("Searching project...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getProjectOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getProjectOrder(): %d",
getProjectOrder()));
if (this.getProject().equals(project)) {
break;
}
previousPosition = currentPosition;
previousIndex = currentIndex;
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided project is not "
+ "part of this collection."));
}
if (previousPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided project is the first one in this "
+ "collection, so there is no previous one to switch "
+ "with."));
}
this.rewind();
while (this.getPosition() != previousPosition) {
this.next();
}
this.setProjectOrder(currentIndex);
this.next();
this.setProjectOrder(previousIndex);
this.rewind();
}
public SciProject getProject() {
return new SciProject(m_dataCollection.getDataObject());
}
}

View File

@ -1,496 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.util.Assert;
import java.math.BigDecimal;
import java.util.Date;
import org.apache.log4j.Logger;
/**
* <p>
* The class represents a (scientific) project. It extends
* {@link GenericOrganizationalUnit} and adds a relation for subprojects and
* some fields for additional information:
* </p>
* <dl>
* <dt><code>projectBegin</code></dt>
* <dd>The begin of the project</dd>
* <dt><code>projectEnd</code></dt>
* <dd>The end of the project</dd>
* <dt><code>shortDescription</code></dt>
* <dd>A short description (500 characters) of the project</dd>
* <dt><code>description</code></dt>
* <dd>A description of the project/<dd>
* <dt><code>funding</code><dt>
* <dd>A text about the funding of the project</dd>
* <dt><code>fundingVolume</code></dt>
* <dd><code>Volume of the funding</code></dt>
* </dl>
* <p>
* Also, the class has some methods the access the associations defined by
* {@link SciOrganization} and {@link SciDepartment} with
* <code>SciProject</code>.
* </p>
* <p>
* There is an
* <a href="doc-files/ccm-sci-types-organization_entities.png">UML digram</a>
* with an overview of the content types and their associations. Please not that
* the diagram show a design sketch and not the actually implemented classes.
* </p>
*
* @author Jens Pelzetter
* @see GenericOrganizationalUnit
* @see SciOrganization
* @see SciDepartment
*/
public class SciProject extends GenericOrganizationalUnit {
public static final String BEGIN = "projectbegin";
public static final String END = "projectend";
public static final String PROJECT_SHORT_DESCRIPTION = "projectShortDesc";
public static final String PROJECT_DESCRIPTION = "projectDescription";
public static final String FUNDING = "funding";
public static final String FUNDING_VOLUME = "fundingVolume";
public static final String SUBPROJECTS = "subProjects";
public static final String SUBPROJECT_ORDER = "subProjectOrder";
public static final String ORGANIZATIONS = "organization";
public static final String ORGANIZATIONS_ORDER = "organizationOrder";
public static final String SUPER_PROJECT = "superProject";
public static final String DEPARTMENTS = "department";
public static final String DEPARTMENTS_ORDER = "departmentOrder";
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.SciProject";
private static final SciOrganizationConfig s_config =
new SciOrganizationConfig();
private static final Logger logger = Logger.getLogger(SciProject.class);
static {
logger.debug("Static initalizer starting...");
s_config.load();
logger.debug("Static initalizer finished.");
}
public enum MemberStatus {
ALL,
ACTIVE,
ASSOCIATED,
FORMER
}
public enum ProjectStatus {
ALL,
ONGOING,
FINISHED
}
public SciProject() {
super(BASE_DATA_OBJECT_TYPE);
}
public SciProject(BigDecimal id) throws DataObjectNotFoundException {
this(new OID(BASE_DATA_OBJECT_TYPE, id));
}
public SciProject(OID oid) {
super(oid);
}
public SciProject(DataObject obj) {
super(obj);
}
public SciProject(String type) {
super(type);
}
public static SciOrganizationConfig getConfig() {
return s_config;
}
public Date getBegin() {
return (Date) get(BEGIN);
}
public void setBegin(Date begin) {
set(BEGIN, begin);
}
public Date getEnd() {
return (Date) get(END);
}
public void setEnd(Date end) {
set(END, end);
}
public String getProjectShortDescription() {
return (String) get(PROJECT_SHORT_DESCRIPTION);
}
public void setProjectShortDescription(String shortDesc) {
set(PROJECT_SHORT_DESCRIPTION, shortDesc);
}
public String getProjectDescription() {
return (String) get(PROJECT_DESCRIPTION);
}
public void setProjectDescription(String description) {
set(PROJECT_DESCRIPTION, description);
}
public String getFunding() {
return (String) get(FUNDING);
}
public void setFunding(String funding) {
set(FUNDING, funding);
}
public String getFundingVolume() {
return (String) get(FUNDING_VOLUME);
}
public void setFundingVolume(String fundingVolume) {
set(FUNDING_VOLUME, fundingVolume);
}
public SciProjectSubProjectsCollection getSubProjects() {
return new SciProjectSubProjectsCollection(
(DataCollection) get(SUBPROJECTS));
}
public void addSubProject(SciProject project) {
Assert.exists(project, SciProject.class);
DataObject link = add(SUBPROJECTS, project);
link.set(SUBPROJECT_ORDER,
Integer.valueOf((int) getSubProjects().size()));
link.save();
}
public void removeSubProject(SciProject project) {
Assert.exists(project, SciProject.class);
logger.debug(String.format("Removing subproject %s",
project.getTitle()));
remove(SUBPROJECTS, project);
}
public SciProjectOrganizationsCollection getOrganizations() {
return new SciProjectOrganizationsCollection((DataCollection) get(
ORGANIZATIONS));
}
public void addOrganization(SciOrganization orga) {
Assert.exists(orga, SciOrganization.class);
DataObject link = add(ORGANIZATIONS, orga);
link.set(ORGANIZATIONS_ORDER,
Integer.valueOf((int) getOrganizations().size()));
link.set(SciOrganization.PROJECT_ORDER,
Integer.valueOf((int) orga.getProjects().size()));
link.save();
}
public void removeOrganization(SciOrganization orga) {
Assert.exists(orga, SciOrganization.class);
remove(ORGANIZATIONS, orga);
}
public boolean hasOrganizations() {
return !this.getOrganizations().isEmpty();
}
public SciProjectDepartmentsCollection getDepartments() {
return new SciProjectDepartmentsCollection((DataCollection) get(
DEPARTMENTS));
}
public void addDepartment(SciDepartment department) {
Assert.exists(department, SciDepartment.class);
DataObject link = add(DEPARTMENTS, department);
link.set(DEPARTMENTS_ORDER,
Integer.valueOf((int) getDepartments().size()));
link.save();
}
public void removeDepartment(SciDepartment department) {
Assert.exists(department, SciDepartment.class);
remove(DEPARTMENTS, department);
}
public boolean hasDepartments() {
return !this.getDepartments().isEmpty();
}
public SciProject getSuperProject() {
DataCollection collection;
collection = (DataCollection) get(SUPER_PROJECT);
if (0 == collection.size()) {
logger.debug(String.format("Project %s has NO super project...",
getTitle()));
return null;
} else {
DataObject dobj;
logger.debug(String.format("Project %s has a super project...",
getTitle()));
collection.next();
dobj = collection.getDataObject();
collection.close();
return new SciProject(dobj);
}
}
public void setSuperProject(SciProject superProject) {
SciProject oldSuperProject;
oldSuperProject = getSuperProject();
if (oldSuperProject != null) {
logger.debug("Removing old super project...");
remove(SUPER_PROJECT, oldSuperProject);
}
if (superProject != null) {
Assert.exists(superProject, SciProject.class);
logger.debug("Setting new super project...");
DataObject link = add(SUPER_PROJECT, superProject);
link.set(SUBPROJECT_ORDER,
Integer.valueOf((int) superProject.getSubProjects().size()));
link.save();
}
}
@Override
public boolean hasContacts() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfContactsOfSciProject");
query.setParameter("project", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}
public boolean hasSubProjects() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubProjectsOfSciProject");
query.setParameter("project", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}
/**
*
* @param merge Should I also look into the projects and return true
* if the organization or at least one of the projects has members?
* @return
*/
public boolean hasMembers(final boolean merge, final MemberStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfSciProject";
break;
case ACTIVE:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfActiveMembersOfSciProject";
break;
case ASSOCIATED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfAssociatedMembersOfSciProject";
break;
case FORMER:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFormerMembersOfSciProject";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("project", getID());
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery projectsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubProjectsOfSciProject");
projectsQuery.setParameter("project", getID());
if (query.size() > 0) {
BigDecimal projectId;
boolean result = false;
while (projectsQuery.next()) {
projectId = (BigDecimal) projectsQuery.get(
"projectId");
result = hasMembers(projectId, merge, status);
if (result) {
break;
}
}
projectsQuery.close();
return result;
} else {
projectsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
private boolean hasMembers(final BigDecimal projectId,
final boolean merge,
final MemberStatus status) {
String queryName;
switch (status) {
case ALL:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfSciProject";
break;
case ACTIVE:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfActiveMembersOfSciProject";
break;
case ASSOCIATED:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfAssociatedMembersOfProject";
break;
case FORMER:
queryName =
"com.arsdigita.cms.contenttypes.getIdsOfFormerMembersOfSciProject";
break;
default:
queryName = "";
break;
}
DataQuery query = SessionManager.getSession().retrieveQuery(queryName);
query.setParameter("project", projectId);
if (query.size() > 0) {
query.close();
return true;
} else {
if (merge) {
query.close();
DataQuery subProjectsQuery =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubProjectsOfSciProject");
subProjectsQuery.setParameter("project", projectId);
if (query.size() > 0) {
BigDecimal subprojectId;
boolean result = false;
while (subProjectsQuery.next()) {
subprojectId = (BigDecimal) subProjectsQuery.get(
"projectId");
result = hasMembers(subprojectId, merge, status);
if (result) {
break;
}
}
subProjectsQuery.close();
return result;
} else {
subProjectsQuery.close();
return false;
}
} else {
query.close();
return false;
}
}
}
/*public boolean hasPublications() {
boolean result = false;
DataQuery query =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfPublicationLinksOfSciProject");
query.setParameter("project", getID());
if (query.size() > 0) {
result = true;
} else {
result = false;
}
query.close();
return result;
}*/
}

View File

@ -1,154 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import org.apache.log4j.Logger;
/**
* Special domain collection for the departments involved in a project.
*
* @author Jens Pelzetter
*/
public class SciProjectDepartmentsCollection extends DomainCollection {
public String ORDER = "departmentOrder";
public String LINKORDER = "link.departmentOrder";
public static final Logger s_log = Logger.getLogger(
SciProjectDepartmentsCollection.class);
public SciProjectDepartmentsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addOrder(LINKORDER);
}
public Integer getDepartmentOrder() {
return (Integer) m_dataCollection.get(LINKORDER);
}
public void setDepartmentOrder(Integer order) {
DataObject link = (DataObject) this.get("link");
link.set(ORDER, order);
}
public void swapWithNext(SciDepartment department) {
int currentPosition = 0;
int currentIndex = 0;
int nextIndex = 0;
s_log.debug("Searching department...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getDepartmentOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getDepartmentOrder(): %d",
getDepartmentOrder()));
if (this.getDepartment().equals(department)) {
break;
}
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided subproject is not "
+ "part of this collection."));
}
if (this.next()) {
nextIndex = this.getDepartmentOrder();
} else {
throw new IllegalArgumentException(
"The provided subproject is the last "
+ "in the collection, so there is no next object "
+ "to swap with.");
}
this.rewind();
while (this.getPosition() != currentPosition) {
this.next();
}
this.setDepartmentOrder(nextIndex);
this.next();
this.setDepartmentOrder(currentIndex);
this.rewind();
}
public void swapWithPrevious(SciDepartment department) {
int previousPosition = 0;
int previousIndex = 0;
int currentPosition = 0;
int currentIndex = 0;
s_log.debug("Searching organization...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getDepartmentOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getDepartmentOrder(): %d",
getDepartmentOrder()));
if (this.getDepartment().equals(department)) {
break;
}
previousPosition = currentPosition;
previousIndex = currentIndex;
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided organization is not "
+ "part of this collection."));
}
if (previousPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided organization is the first one in this "
+ "collection, so there is no previous one to switch "
+ "with."));
}
this.rewind();
while (this.getPosition() != previousPosition) {
this.next();
}
this.setDepartmentOrder(currentIndex);
this.next();
this.setDepartmentOrder(previousIndex);
this.rewind();
}
public SciDepartment getDepartment() {
return new SciDepartment(m_dataCollection.getDataObject());
}
}

View File

@ -1,49 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import org.apache.log4j.Logger;
/**
* Initializer for {@link SciProject}.
*
* @author Jens Pelzetter
*/
public class SciProjectInitializer extends ContentTypeInitializer {
private static final Logger s_log = Logger.getLogger(
SciProjectInitializer.class);
public SciProjectInitializer() {
super("empty.pdl.mf", SciProject.BASE_DATA_OBJECT_TYPE);
}
@Override
public String[] getStylesheets() {
return new String[]{
"/static/content-types/com/arsdigita/cms/contenttypes/SciProject.xsl"
};
}
@Override
public String getTraversalXML() {
return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciProject.xml";
}
}

View File

@ -1,12 +0,0 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciProjectListXmlGenerator extends SimpleXMLGenerator {
}

View File

@ -1,74 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
import com.arsdigita.util.parameter.Parameter;
import com.arsdigita.util.parameter.ResourceParameter;
import com.arsdigita.workflow.simple.WorkflowTemplate;
import java.io.InputStream;
/**
* Loader for {@link SciProject}
*
* @author Jens Pelzetter
*/
public class SciProjectLoader extends AbstractContentTypeLoader {
private ResourceParameter m_template;
private static final String[] TYPES = {
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciProject.xml"
};
public SciProjectLoader() {
super();
m_template = new ResourceParameter(
"com.arsdigita.cms.contenttypes.SciProjectTemplate",
Parameter.REQUIRED,
"/WEB-INF/content-types/com/arsdigita/"
+ "cms/contenttypes/sciproject-item.jsp");
register(m_template);
}
@Override
public String[] getTypes() {
return TYPES;
}
@Override
protected void prepareSection(final ContentSection section,
final ContentType type,
final LifecycleDefinition lifecycle,
final WorkflowTemplate workflow) {
super.prepareSection(section, type, lifecycle, workflow);
setDefaultTemplate("SciProject Item",
"sciproject-item",
(InputStream) get(m_template),
section,
type,
lifecycle,
workflow);
}
}

View File

@ -1,156 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import org.apache.log4j.Logger;
/**
* Special domain collection for the organization involved in a project.
*
* @author Jens Pelzetter
*/
public class SciProjectOrganizationsCollection extends DomainCollection {
public String ORDER = "organizationOrder";
public String LINKORDER = "link.organizationOrder";
private static final Logger s_log =
Logger.getLogger(
SciProjectSubProjectsCollection.class);
public SciProjectOrganizationsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addOrder(LINKORDER);
}
public Integer getOrganizationOrder() {
return (Integer) m_dataCollection.get(LINKORDER);
}
public void setOrganizationOrder(Integer order) {
DataObject link = (DataObject) this.get("link");
link.set(ORDER, order);
}
public void swapWithNext(SciOrganization orga) {
int currentPosition = 0;
int currentIndex = 0;
int nextIndex = 0;
s_log.debug("Searching organization...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getOrganizationOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getOrganizationOrder(): %d",
getOrganizationOrder()));
if (this.getOrganization().equals(orga)) {
break;
}
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided subproject is not "
+ "part of this collection."));
}
if (this.next()) {
nextIndex = this.getOrganizationOrder();
} else {
throw new IllegalArgumentException(
"The provided subproject is the last "
+ "in the collection, so there is no next object "
+ "to swap with.");
}
this.rewind();
while (this.getPosition() != currentPosition) {
this.next();
}
this.setOrganizationOrder(nextIndex);
this.next();
this.setOrganizationOrder(currentIndex);
this.rewind();
}
public void swapWithPrevious(SciOrganization orga) {
int previousPosition = 0;
int previousIndex = 0;
int currentPosition = 0;
int currentIndex = 0;
s_log.debug("Searching organization...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getOrganizationOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getOrganizationOrder(): %d",
getOrganizationOrder()));
if (this.getOrganization().equals(orga)) {
break;
}
previousPosition = currentPosition;
previousIndex = currentIndex;
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided organization is not "
+ "part of this collection."));
}
if (previousPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided organization is the first one in this "
+ "collection, so there is no previous one to switch "
+ "with."));
}
this.rewind();
while (this.getPosition() != previousPosition) {
this.next();
}
this.setOrganizationOrder(currentIndex);
this.next();
this.setOrganizationOrder(previousIndex);
this.rewind();
}
public SciOrganization getOrganization() {
return new SciOrganization(m_dataCollection.getDataObject());
}
}

View File

@ -1,155 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import org.apache.log4j.Logger;
/**
* Special domain collection for the suprojects of a project.
*
* @author Jens Pelzetter
*/
public class SciProjectSubProjectsCollection extends DomainCollection {
public String ORDER = "subProjectOrder";
public String LINKORDER = "link.subProjectOrder";
private static final Logger s_log =
Logger.getLogger(
SciProjectSubProjectsCollection.class);
public SciProjectSubProjectsCollection(DataCollection dataCollection) {
super(dataCollection);
m_dataCollection.addOrder(LINKORDER);
}
public Integer getSubProjectOrder() {
return (Integer) m_dataCollection.get(LINKORDER);
}
public void setSubProjectOrder(Integer order) {
DataObject link = (DataObject) this.get("link");
link.set(ORDER, order);
}
public void swapWithNext(SciProject subproject) {
int currentPosition = 0;
int currentIndex = 0;
int nextIndex = 0;
s_log.debug("Searching subproject...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getSubProjectOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getSubProjectOrder(): %d",
getSubProjectOrder()));
if (this.getSubProject().equals(subproject)) {
break;
}
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided subproject is not "
+ "part of this collection."));
}
if (this.next()) {
nextIndex = this.getSubProjectOrder();
} else {
throw new IllegalArgumentException(
"The provided subproject is the last "
+ "in the collection, so there is no next object "
+ "to swap with.");
}
this.rewind();
while (this.getPosition() != currentPosition) {
this.next();
}
this.setSubProjectOrder(nextIndex);
this.next();
this.setSubProjectOrder(currentIndex);
this.rewind();
}
public void swapWithPrevious(SciProject subproject) {
int previousPosition = 0;
int previousIndex = 0;
int currentPosition = 0;
int currentIndex = 0;
s_log.debug("Searching subproject...");
this.rewind();
while (this.next()) {
currentPosition = this.getPosition();
currentIndex = this.getSubProjectOrder();
s_log.debug(String.format("Position: %d(%d)/%d", currentPosition,
currentIndex, this.size()));
s_log.debug(String.format("getSubProjectOrder(): %d",
getSubProjectOrder()));
if (this.getSubProject().equals(subproject)) {
break;
}
previousPosition = currentPosition;
previousIndex = currentIndex;
}
if (currentPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided subproject is not "
+ "part of this collection."));
}
if (previousPosition == 0) {
throw new IllegalArgumentException(
String.format(
"The provided subproject is the first one in this "
+ "collection, so there is no previous one to switch "
+ "with."));
}
this.rewind();
while (this.getPosition() != previousPosition) {
this.next();
}
this.setSubProjectOrder(currentIndex);
this.next();
this.setSubProjectOrder(previousIndex);
this.rewind();
}
public SciProject getSubProject() {
return new SciProject(m_dataCollection.getDataObject());
}
}

View File

@ -1,65 +0,0 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.installer.xml.XMLContentTypeHandler;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.KernelExcursion;
import com.arsdigita.persistence.Session;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.persistence.TransactionContext;
import com.arsdigita.xml.XML;
/**
* Updates the authoring steps of SciOrganization, SciDepartment and
* SciProject to reflect the changes made in version 6.6.1 (PWI SVN
* revision 887).
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciTypesOrganizationUpdate660to661 {
private static final String SCI_ORGANIZATION =
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciOrganization.xml";
private static final String SCI_DEPARTMENT =
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xml";
private static final String SCI_PROJECT =
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciProject.xml";
public static void main(String[] args) {
final com.arsdigita.runtime.Runtime runtime =
new com.arsdigita.runtime.Runtime();
runtime.startup();
final Session session = SessionManager.getSession();
final TransactionContext tc = session.getTransactionContext();
try {
tc.beginTxn();
new KernelExcursion() {
@Override
protected void excurse() {
setEffectiveParty(Kernel.getSystemParty());
/*
* Reload content type definitions from XML config to add
* new authoring steps.
*/
XMLContentTypeHandler handler = new XMLContentTypeHandler();
XML.parseResource(SCI_ORGANIZATION, handler);
XML.parseResource(SCI_DEPARTMENT, handler);
XML.parseResource(SCI_PROJECT, handler);
}
}.run();
session.flushAll();
tc.commitTxn();
} catch (Exception ex) {
System.out.println("Exception ocurred during update: ");
ex.printStackTrace(System.out);
} finally {
if (tc.inTxn()) {
tc.abortTxn();
}
}
}
}

View File

@ -1,101 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.form.TextArea;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.ui.CMSDHTMLEditor;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Edit form for the description of a SciDepartment.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentDescriptionEditForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
public SciDepartmentDescriptionEditForm(ItemSelectionModel itemModel) {
super("scidepartmentEditDescForm", itemModel);
}
@Override
protected void addWidgets() {
add(new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.description")));
ParameterModel descParam = new StringParameter(
SciDepartment.DEPARTMENT_DESCRIPTION);
TextArea desc;
if (SciDepartment.getConfig().getDepartmentDescriptionDhtml()) {
desc = new CMSDHTMLEditor(descParam);
} else {
desc = new TextArea(descParam);
}
desc.setCols(75);
desc.setRows(25);
add(desc);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
FormData data = fse.getFormData();
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
data.put(SciDepartment.DEPARTMENT_DESCRIPTION,
department.getDepartmentDescription());
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
FormData data = fse.getFormData();
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
if ((department != null) && getSaveCancelSection().getSaveButton().
isSelected(state)) {
department.setDepartmentDescription((String) data.get(
SciDepartment.DEPARTMENT_DESCRIPTION));
department.save();
init(fse);
}
}
}

View File

@ -1,84 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
/**
* EditStep for the description of a SciDepartment.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentDescriptionStep extends SimpleEditStep {
private String EDIT_DEPARTMENT_DESC_SHEET_NAME = "editDepartmentDesc";
private String UPLOAD_DEPARTMENT_DESC_SHEET_NAME = "uploadDepartmentDesc";
public SciDepartmentDescriptionStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciDepartmentDescriptionStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm editDescForm =
new SciDepartmentDescriptionEditForm(itemModel);
add(EDIT_DEPARTMENT_DESC_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.edit_desc").localize(),
new WorkflowLockedComponentAccess(editDescForm, itemModel),
editDescForm.getSaveCancelSection().getCancelButton());
SciDepartmentDescriptionUploadForm uploadDescForm =
new SciDepartmentDescriptionUploadForm(
itemModel);
add(UPLOAD_DEPARTMENT_DESC_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.upload_desc").localize(),
new WorkflowLockedComponentAccess(uploadDescForm, itemModel),
uploadDescForm.getSaveCancelSection().getCancelButton());
setDisplayComponent(
getSciDepartmentDescSheet(itemModel));
}
public static Component getSciDepartmentDescSheet(
ItemSelectionModel itemModel) {
DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(
itemModel);
sheet.add(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.desc"),
SciDepartment.DEPARTMENT_DESCRIPTION);
return sheet;
}
}

View File

@ -1,61 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.globalization.GlobalizedMessage;
/**
* Upload form for the description of a SciDepartment.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see AbstractTextUploadForm
*/
public class SciDepartmentDescriptionUploadForm extends AbstractTextUploadForm {
public SciDepartmentDescriptionUploadForm(ItemSelectionModel itemModel) {
super(itemModel);
}
@Override
public GlobalizedMessage getLabelText() {
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.description.upload");
}
@Override
public GlobalizedMessage getMimeTypeLabel() {
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.description.upload.mimetype");
}
@Override
public void setText(ItemSelectionModel itemModel,
PageState state,
String text) {
SciDepartment department = (SciDepartment) itemModel.getSelectedObject(
state);
department.setDepartmentDescription(text);
department.save();
}
}

View File

@ -1,53 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
/**
* Form for adding members to a SciDepartment. This form overwrites
* the {@link GenericOrganizationalUnitPersonAddForm#getPersonType()}
* to limit the selectable type for adding to {@link SciMember}.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciMember
* @see GenericOrganizationalUnitPersonAddForm
*/
public class SciDepartmentMemberAddForm
extends GenericOrganizationalUnitPersonAddForm {
public SciDepartmentMemberAddForm(ItemSelectionModel itemModel,
GenericOrganizationalUnitPersonSelector personSelector) {
super(itemModel, personSelector);
}
@Override
protected String getPersonType() {
return GenericPerson.class.getName();
}
@Override
protected String getRoleAttributeName() {
return "SciDepartmentRole";
}
}

View File

@ -1,96 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Edit step for adding members to a SciDepartment.
*
* @author Jens Pelzetter
*/
public class SciDepartmentMemberStep
extends SimpleEditStep
implements GenericOrganizationalUnitPersonSelector {
private static final String ADD_MEMBER_SHEET_NAME = "addMember";
private GenericPerson selectedPerson;
private String selectedPersonRole;
private String selectedPersonStatus;
public SciDepartmentMemberStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciDepartmentMemberStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addMemberSheet =
new SciDepartmentMemberAddForm(itemModel,
this);
add(ADD_MEMBER_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.add_member").localize(),
new WorkflowLockedComponentAccess(addMemberSheet, itemModel),
addMemberSheet.getSaveCancelSection().getCancelButton());
SciDepartmentMemberTable memberTable = new SciDepartmentMemberTable(
itemModel,
this);
setDisplayComponent(memberTable);
}
public GenericPerson getSelectedPerson() {
return selectedPerson;
}
public void setSelectedPerson(final GenericPerson selectedPerson) {
this.selectedPerson = selectedPerson;
}
public String getSelectedPersonRole() {
return selectedPersonRole;
}
public void setSelectedPersonRole(final String selectedPersonRole) {
this.selectedPersonRole = selectedPersonRole;
}
public String getSelectedPersonStatus() {
return selectedPersonStatus;
}
public void setSelectedPersonStatus(final String selectedPersonStatus) {
this.selectedPersonStatus = selectedPersonStatus;
}
public void showEditComponent(PageState state) {
showComponent(state, ADD_MEMBER_SHEET_NAME);
}
}

View File

@ -1,39 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
/**
*
* @author Jens Pelzetter
*/
public class SciDepartmentMemberTable extends GenericOrganizationalUnitPersonsTable {
public SciDepartmentMemberTable(ItemSelectionModel itemModel,
GenericOrganizationalUnitPersonSelector personSelector) {
super(itemModel, personSelector);
}
@Override
protected String getRoleAttributeName() {
return "SciDepartmentRole";
}
}

View File

@ -1,115 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Form for setting the superior organization of an SciDepartment.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciOrganization
*/
public class SciDepartmentOrganizationForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private ItemSearchWidget m_itemSearch;
private final String ITEM_SEARCH = "departmentOrga";
public SciDepartmentOrganizationForm(ItemSelectionModel itemModel) {
super("DepartmentOrganizationForm", itemModel);
}
@Override
protected void addWidgets() {
add(new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_organization")));
m_itemSearch = new ItemSearchWidget(ITEM_SEARCH,
ContentType.
findByAssociatedObjectType(SciOrganization.class.getName()));
add(m_itemSearch);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
if (this.getSaveCancelSection().getSaveButton().isSelected(state)) {
SciOrganization orga = (SciOrganization) data.get(ITEM_SEARCH);
orga = (SciOrganization) orga.getContentBundle().getInstance(department.getLanguage());
department.setOrganization(orga);
//department.setOrganization((SciOrganization) data.get(ITEM_SEARCH));
}
init(fse);
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.organization.add.no_organization_selected"));
return;
}
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
SciOrganization orga = (SciOrganization) data.get(ITEM_SEARCH);
if (!(orga.getContentBundle().hasInstance(department.getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.organization.add.no_suitable_language_variant"));
}
}
}

View File

@ -1,295 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.dispatcher.ObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
/**
* Sheet for showing the superior organization of a SciDepartment.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciOrganization
*/
public class SciDepartmentOrganizationSheet
extends Table
implements TableActionListener {
private static final Logger logger =
Logger.getLogger(
SciDepartmentOrganizationSheet.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private ItemSelectionModel m_itemModel;
public SciDepartmentOrganizationSheet(ItemSelectionModel itemModel) {
super();
m_itemModel = itemModel;
setEmptyView(
new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.organization_none")));
TableColumnModel colModel = getColumnModel();
colModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.organization").localize(),
TABLE_COL_EDIT));
colModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.organization.remove").localize(),
TABLE_COL_DEL));
setModelBuilder(
new SciDepartmentOrganizationSheetModelBuilder(itemModel));
colModel.get(0).setCellRenderer(new EditCellRenderer());
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(this);
}
private class SciDepartmentOrganizationSheetModelBuilder
extends LockableImpl
implements TableModelBuilder {
private ItemSelectionModel m_itemModel;
public SciDepartmentOrganizationSheetModelBuilder(
ItemSelectionModel itemModel) {
m_itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
return new SciDepartmentOrganizationSheetModel(table,
state,
department);
}
}
private class SciDepartmentOrganizationSheetModel
implements TableModel {
private Table m_table;
private SciOrganization m_orga;
private boolean m_done;
public SciDepartmentOrganizationSheetModel(Table table,
PageState state,
SciDepartment department) {
m_table = table;
m_orga = department.getOrganization();
if (m_orga == null) {
m_done = false;
} else {
m_done = true;
}
}
public int getColumnCount() {
return m_table.getColumnModel().size();
}
public boolean nextRow() {
boolean ret;
if (m_done) {
ret = true;
m_done = false;
} else {
ret = false;
}
return ret;
}
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return m_orga.getTitle();
case 1:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.organization.remove").
localize();
default:
return null;
}
}
public Object getKeyAt(int columnIndex) {
return m_orga.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int column) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.EDIT_ITEM,
department);
if (canEdit) {
SciOrganization organization;
try {
organization = new SciOrganization((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
logger.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link = new Link(String.format("%s (%s)",
value.toString(),
organization.getLanguage()),
resolver.generateItemURL(state,
organization,
section,
organization.
getVersion()));
return link;
} else {
SciOrganization organization;
try {
organization = new SciOrganization((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
logger.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
Label label = new Label(
String.format("%s (%s)",
value.toString(),
organization.getLanguage()));
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(
state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.DELETE_ITEM,
department);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"sciorganization.ui.department.organization."
+ "confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciDepartment department =
(SciDepartment) m_itemModel.getSelectedObject(
state);
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
department.setOrganization(null);
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do
}
}

View File

@ -1,65 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Step for setting the superior organization of a SciDepartment.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciOrganization
*/
public class SciDepartmentOrganizationStep extends SimpleEditStep {
private String SET_DEPARTMENT_ORGANIZATION_STEP =
"setDepartmentOrganization";
public SciDepartmentOrganizationStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciDepartmentOrganizationStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm setOrgaForm =
new SciDepartmentOrganizationForm(itemModel);
add(SET_DEPARTMENT_ORGANIZATION_STEP,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.setOrganization").localize(),
new WorkflowLockedComponentAccess(setOrgaForm, itemModel),
setOrgaForm.getSaveCancelSection().getCancelButton());
SciDepartmentOrganizationSheet sheet =
new SciDepartmentOrganizationSheet(
itemModel);
setDisplayComponent(sheet);
}
}

View File

@ -1,570 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.contenttypes.ui.panels.Filter;
import com.arsdigita.cms.contenttypes.ui.panels.TextFilter;
import com.arsdigita.xml.Element;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
/**
*
* @author Jens Pelzetter
*/
public class SciDepartmentPanel extends SciOrganizationBasePanel {
private static final Logger s_log = Logger.getLogger(
SciDepartmentPanel.class);
public static final String SHOW_DESCRIPTION = "description";
public static final String SHOW_MEMBERS_ACTIVE = "membersActive";
public static final String SHOW_MEMBERS_ASSOCIATED = "membersAssociated";
public static final String SHOW_MEMBERS_FORMER = "membersFormer";
public static final String SHOW_SUBDEPARTMENTS = "subdepartments";
public static final String SHOW_PROJECTS = "projects";
public static final String SHOW_PROJECTS_ONGOING = "projectsOngoing";
public static final String SHOW_PROJECTS_FINISHED = "projectsFinished";
private static final String TITLE = "title";
private String show;
private boolean displayDescription = true;
private boolean displaySubDepartments = true;
private boolean displayProjects = true;
private Map<String, Filter> projectFilters =
new LinkedHashMap<String, Filter>();
public SciDepartmentPanel() {
projectFilters.put(TITLE, new TextFilter(TITLE, TITLE));
}
@Override
protected String getDefaultShowParam() {
return SHOW_DESCRIPTION;
}
@Override
protected Class<? extends ContentItem> getAllowedClass() {
return SciDepartment.class;
}
public boolean isDisplayDescription() {
return displayDescription;
}
public void setDisplayDescription(boolean displayDescription) {
this.displayDescription = displayDescription;
}
public boolean isDisplayProjects() {
return displayProjects;
}
public void setDisplayProjects(boolean displayProjects) {
this.displayProjects = displayProjects;
}
public boolean isDisplaySubDepartments() {
return displaySubDepartments;
}
public void setDisplaySubDepartments(boolean displaySubDepartments) {
this.displaySubDepartments = displaySubDepartments;
}
protected boolean hasMembers(final SciDepartment department) {
return department.hasMembers(SciDepartment.getConfig().
getOrganizationMembersMerge(),
SciDepartment.MemberStatus.ALL);
}
protected boolean hasActiveMembers(final SciDepartment department) {
return department.hasMembers(SciDepartment.getConfig().
getOrganizationMembersMerge(),
SciDepartment.MemberStatus.ACTIVE);
}
protected boolean hasAssociatedMembers(final SciDepartment department) {
return department.hasMembers(SciDepartment.getConfig().
getOrganizationMembersMerge(),
SciDepartment.MemberStatus.ASSOCIATED);
}
protected boolean hasFormerMembers(final SciDepartment department) {
return department.hasMembers(SciDepartment.getConfig().
getOrganizationMembersMerge(),
SciDepartment.MemberStatus.FORMER);
}
protected boolean hasProjects(final SciDepartment department) {
return department.hasProjects(SciDepartment.getConfig().
getOrganizationProjectsMerge(),
SciDepartment.ProjectStatus.ALL);
}
protected boolean hasOngoingProjects(final SciDepartment department) {
return department.hasProjects(SciDepartment.getConfig().
getOrganizationProjectsMerge(),
SciDepartment.ProjectStatus.ONGOING);
}
protected boolean hasFinishedProjects(final SciDepartment department) {
return department.hasProjects(SciDepartment.getConfig().
getOrganizationProjectsMerge(),
SciDepartment.ProjectStatus.FINISHED);
}
protected void generateSubDepartmentsXML(final SciDepartment department,
final Element parent,
final PageState state) {
SciDepartmentSubDepartmentsCollection subDepartments;
subDepartments = department.getSubDepartments();
subDepartments.addOrder("link.subDepartmentOrder asc");
long pageNumber = getPageNumber(state);
Element subDepartmentsElem = parent.newChildElement("subDepartments");
long pageCount = getPageCount(subDepartments.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, subDepartments.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(
parent, pageNumber, pageCount, begin, end, count,
subDepartments.size());
subDepartments.setRange((int) begin + 1, (int) end + 1);
while (subDepartments.next()) {
SciDepartment subDepartment;
subDepartment = subDepartments.getSubDepartment();
Element subDepartmentElem = subDepartmentsElem.newChildElement(
"department");
subDepartmentElem.addAttribute("order",
Integer.toString(subDepartments.
getSubDepartmentOrder()));
subDepartmentElem.addAttribute("oid", subDepartment.getOID().
toString());
Element title = subDepartmentElem.newChildElement("title");
title.setText(subDepartment.getTitle());
if ((subDepartment.getAddendum() != null)
&& !(subDepartment.getAddendum().isEmpty())) {
Element addendum = subDepartmentElem.newChildElement("addendum");
addendum.setText(subDepartment.getAddendum());
}
if ((subDepartment.getDepartmentShortDescription() != null)
&& !(subDepartment.getDepartmentShortDescription().isEmpty())) {
Element shortDesc = subDepartmentElem.newChildElement(
"shortDescription");
shortDesc.setText(subDepartment.getDepartmentShortDescription());
}
GenericOrganizationalUnitPersonCollection heads;
heads = subDepartment.getPersons();
heads.addFilter(("link.role_name = 'head'"));
heads.addOrder("surname asc, givenname asc");
if (heads.size() > 0) {
Element headsElem = subDepartmentElem.newChildElement("heads");
while (heads.next()) {
Element headElem = headsElem.newChildElement("head");
Element titlePre = headElem.newChildElement("titlePre");
titlePre.setText(heads.getTitlePre());
Element givenName = headElem.newChildElement("givenname");
givenName.setText(heads.getGivenName());
Element surname = headElem.newChildElement("surname");
surname.setText(heads.getSurname());
Element titlePost = headElem.newChildElement("titlePost");
titlePost.setText(heads.getTitlePost());
}
}
GenericOrganizationalUnitContactCollection contacts;
contacts = subDepartment.getContacts();
if (contacts.size() > 0) {
Element contactsElem = subDepartmentElem.newChildElement(
"contacts");
while (contacts.next()) {
generateContactXML(contacts.getContactType(),
contacts.getPerson(),
contacts.getContactEntries(),
contacts.getAddress(),
contactsElem,
state,
Integer.toString(
contacts.getContactOrder()),
true);
}
}
}
}
protected void generateMembersXML(final SciDepartment department,
final Element parent,
final PageState state,
final List<String> filters) {
if (SciDepartment.getConfig().getOrganizationMembersMerge()) {
List<MemberListItem> members;
members = new LinkedList<MemberListItem>();
GenericOrganizationalUnitPersonCollection departmentMembers;
departmentMembers = department.getPersons();
for (String filter : filters) {
departmentMembers.addFilter(filter);
}
SciDepartmentSubDepartmentsCollection subDepartments;
subDepartments = department.getSubDepartments();
while (departmentMembers.next()) {
addMember(departmentMembers,
members);
}
mergeMembers(subDepartments, members, filters);
Collections.sort(members, new MemberListItemComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(members.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, members.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(
parent, pageNumber, pageCount, begin, end, count, members.
size());
List<MemberListItem> membersToShow = members.subList((int) begin,
(int) end);
Element membersElem = parent.newChildElement("members");
for (MemberListItem memberItem : membersToShow) {
generateMemberXML(memberItem,
membersElem,
memberItem.getRole(),
memberItem.getStatus(),
state);
}
} else {
GenericOrganizationalUnitPersonCollection departmentMembers;
departmentMembers = department.getPersons();
for (String filter : filters) {
departmentMembers.addFilter(filter);
}
List<MemberListItem> members = new LinkedList<MemberListItem>();
while (departmentMembers.next()) {
addMember(departmentMembers,
members);
}
Collections.sort(members, new MemberListItemComparator());
long pageNumber = getPageNumber(state);
Element membersElem = parent.newChildElement("members");
long pageCount = getPageCount(members.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, members.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(
parent, pageNumber, pageCount, begin, end, count, members.
size());
List<MemberListItem> membersToShow = members.subList((int) begin,
(int) end);
for (MemberListItem memberItem : membersToShow) {
generateMemberXML(memberItem,
membersElem,
memberItem.getRole(),
memberItem.getStatus(),
state);
}
}
}
protected void generateProjectFiltersXml(
final List<SciProject> projects,
final Element element) {
final Element filterElement = element.newChildElement("filters");
for (Map.Entry<String, Filter> filterEntry : projectFilters.entrySet()) {
filterEntry.getValue().generateXml(filterElement);
}
}
protected void applyProjectFilters(
final List<String> filters,
final HttpServletRequest request) {
//Get parameters from HTTP request
for (Map.Entry<String, Filter> filterEntry : projectFilters.entrySet()) {
String value = request.getParameter(
filterEntry.getValue().getLabel());
if ((value != null) && !(value.trim().isEmpty())) {
filterEntry.getValue().setValue(value);
}
}
}
protected void generateProjectsXML(final SciDepartment department,
final Element parent,
final PageState state,
final List<String> filters) {
Element controls = parent.newChildElement("filterControls");
controls.addAttribute("customName", "sciDepartmentProjects");
controls.addAttribute("show", show);
if (SciDepartment.getConfig().getOrganizationProjectsMerge()) {
List<SciProject> projects;
projects = new LinkedList<SciProject>();
SciDepartmentProjectsCollection departmentProjects;
departmentProjects = department.getProjects();
applyProjectFilters(filters, state.getRequest());
if ((filters != null)
&& !(filters.isEmpty())) {
for (String filter : filters) {
departmentProjects.addFilter(filter);
}
}
SciDepartmentSubDepartmentsCollection subDepartments;
subDepartments = department.getSubDepartments();
while (departmentProjects.next()) {
projects.add(departmentProjects.getProject());
}
mergeProjects(subDepartments, projects, filters);
Set<SciProject> projectsSet;
List<SciProject> projectsWithoutDoubles;
projectsSet = new HashSet<SciProject>(projects);
projectsWithoutDoubles = new LinkedList<SciProject>(projectsSet);
Collections.sort(projectsWithoutDoubles, new SciProjectComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(projectsWithoutDoubles.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, projectsWithoutDoubles.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
generateProjectFiltersXml(projectsWithoutDoubles, controls);
createPaginatorElement(parent,
pageNumber,
pageCount,
begin,
end,
count,
projectsWithoutDoubles.size());
List<SciProject> projectsToShow =
projectsWithoutDoubles.subList((int) begin,
(int) end);
Element projectsElem = parent.newChildElement("projects");
for (SciProject project : projectsToShow) {
generateProjectXML(project, projectsElem, state);
}
} else {
SciDepartmentProjectsCollection departmentProjects;
departmentProjects = department.getProjects();
if ((filters != null)
&& !(filters.isEmpty())) {
for (String filter : filters) {
departmentProjects.addFilter(filter);
}
}
List<SciProject> projects = new LinkedList<SciProject>();
while (departmentProjects.next()) {
projects.add(departmentProjects.getProject());
}
Collections.sort(projects, new SciProjectComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(projects.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, projects.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
generateProjectFiltersXml(projects, controls);
createPaginatorElement(
parent, pageNumber, pageCount, begin, end, count, projects.
size());
List<SciProject> projectsToShow = projects.subList((int) begin,
(int) end);
Element projectsElem = parent.newChildElement("projects");
for (SciProject project : projectsToShow) {
generateProjectXML(project, projectsElem, state);
}
}
}
@Override
protected void generateAvailableDataXml(final GenericOrganizationalUnit orga,
final Element element,
final PageState state) {
final SciOrganizationConfig config = SciOrganization.getConfig();
SciDepartment department = (SciDepartment) orga;
if ((department.getDepartmentDescription() != null)
&& !department.getDepartmentDescription().isEmpty()
&& displayDescription) {
element.newChildElement("description");
}
if (department.hasContacts()
&& isDisplayContacts()) {
element.newChildElement("contacts");
}
if (department.hasSubDepartments()
&& displaySubDepartments) {
element.newChildElement("subDepartments");
}
if (config.getOrganizationMembersAllInOne()) {
if (hasMembers(department)
&& isDisplayMembers()) {
element.newChildElement("members");
}
} else {
if (hasActiveMembers(department)
&& isDisplayMembers()) {
element.newChildElement("membersActive");
}
if (hasAssociatedMembers(department)
&& isDisplayMembers()) {
element.newChildElement("membersAssociated");
}
if (hasFormerMembers(department)
&& isDisplayMembers()) {
element.newChildElement("membersFormer");
}
}
if (config.getOrganizationProjectsAllInOne()) {
if (hasProjects(department)
&& displayProjects) {
element.newChildElement("projects");
}
} else {
if (hasOngoingProjects(department)
&& displayProjects) {
element.newChildElement("projectsOngoing");
}
if (hasFinishedProjects(department)
&& displayProjects) {
element.newChildElement("projectsFinished");
}
}
}
@Override
protected void generateDataXml(GenericOrganizationalUnit orga,
Element element,
PageState state) {
show = getShowParam(state);
SciDepartment department = (SciDepartment) orga;
if (SHOW_DESCRIPTION.equals(show)) {
String desc;
desc = department.getDepartmentDescription();
Element description = element.newChildElement("description");
description.setText(desc);
} else if (SHOW_CONTACTS.equals(show)) {
generateContactsXML(department, element, state);
} else if (SHOW_MEMBERS.equals(show)) {
generateMembersXML(department, element, state,
new LinkedList<String>());
} else if (SHOW_MEMBERS_ACTIVE.equals(show)) {
generateMembersXML(department, element, state,
getFiltersForActiveMembers());
} else if (SHOW_MEMBERS_ASSOCIATED.equals(show)) {
generateMembersXML(department, element, state,
getFiltersForAssociatedMembers());
} else if (SHOW_MEMBERS_FORMER.equals(show)) {
generateMembersXML(department, element, state,
getFiltersForFormerMembers());
} else if (SHOW_PROJECTS.equals(show)) {
generateProjectsXML(department, element, state,
new LinkedList<String>());
} else if (SHOW_PROJECTS_ONGOING.equals(show)) {
generateProjectsXML(department, element, state,
getFiltersForOngoingProjects());
} else if (SHOW_PROJECTS_FINISHED.equals(show)) {
generateProjectsXML(department, element, state,
getFiltersForFinishedProjects());
} else if (SHOW_SUBDEPARTMENTS.equals(show)) {
generateSubDepartmentsXML(department, element, state);
}
}
/*@Override
public void generateXML(ContentItem item,
Element element,
PageState state) {
Element content = generateBaseXML(item, element, state);
Element availableData = content.newChildElement("availableData");
SciDepartment department = (SciDepartment) item;
generateAvailableDataXml(department, availableData, state);
generateDataXml(department, content, state);
}*/
}

View File

@ -1,127 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Form for linking an {@link SciDepartment} with a {@link SciProject}.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciProject
*/
public class SciDepartmentProjectAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private ItemSearchWidget m_itemSearch;
private final String ITEM_SEARCH = "projects";
public SciDepartmentProjectAddForm(ItemSelectionModel itemModel) {
super("ProjectsAddForm", itemModel);
}
@Override
protected void addWidgets() {
add(new Label((String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_project").localize()));
m_itemSearch = new ItemSearchWidget(
ITEM_SEARCH,
ContentType.findByAssociatedObjectType(
SciProject.class.getName()));
add(m_itemSearch);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
if (!(this.getSaveCancelSection().getCancelButton().
isSelected(state))) {
SciProject project = (SciProject) data.get(ITEM_SEARCH);
project = (SciProject) project.getContentBundle().getInstance(department.
getLanguage());
department.addProject(project);
}
init(fse);
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_project.no_project_selected"));
return;
}
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
SciProject project = (SciProject) data.get(ITEM_SEARCH);
if (!(project.getContentBundle().hasInstance(department.getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_project.no_suitable_language_variant"));
return;
}
project = (SciProject) project.getContentBundle().getInstance(department.
getLanguage());
SciDepartmentProjectsCollection projects = department.getProjects();
projects.addFilter(String.format("id = %s", project.getID().toString()));
if (projects.size() > 0) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_project.already_added"));
}
projects.close();
}
}

View File

@ -1,65 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Step for linking {@link SciDepartment}s with {@link SciProject}s.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciProject
*/
public class SciDepartmentProjectsStep extends SimpleEditStep {
private String ADD_PROJECT_SHEET_NAME = "addProject";
public SciDepartmentProjectsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciDepartmentProjectsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addProjectSheet =
new SciDepartmentProjectAddForm(itemModel);
add(ADD_PROJECT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.add_project").localize(),
new WorkflowLockedComponentAccess(addProjectSheet, itemModel),
addProjectSheet.getSaveCancelSection().getCancelButton());
SciDepartmentProjectsTable projectsTable =
new SciDepartmentProjectsTable(
itemModel);
setDisplayComponent(projectsTable);
}
}

View File

@ -1,383 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import java.math.BigDecimal;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.dispatcher.ObjectNotFoundException;
import com.arsdigita.util.LockableImpl;
import org.apache.log4j.Logger;
/**
* Table for showing all {@link SciProject}s linked with a {@link SciDepartment}
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciProject
*/
public class SciDepartmentProjectsTable
extends Table
implements TableActionListener {
private final Logger s_log = Logger.getLogger(
SciDepartmentProjectsTable.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private final String TABLE_COL_UP = "table_col_up";
private final String TABLE_COL_DOWN = "table_col_down";
private ItemSelectionModel m_itemModel;
public SciDepartmentProjectsTable(ItemSelectionModel itemModel) {
super();
m_itemModel = itemModel;
setEmptyView(
new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.projects.none")));
TableColumnModel colModel = getColumnModel();
colModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project").localize(),
TABLE_COL_EDIT));
colModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project.remove").localize(),
TABLE_COL_DEL));
/*colModel.add(new TableColumn(
2,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project.up").localize(),
TABLE_COL_UP));
colModel.add(new TableColumn(
3,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project.down").localize(),
TABLE_COL_DOWN));*/
setModelBuilder(
new SciDepartmentProjectsTableModelBuilder(itemModel));
colModel.get(0).setCellRenderer(new EditCellRenderer());
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
//colModel.get(2).setCellRenderer(new UpCellRenderer());
//colModel.get(3).setCellRenderer(new DownCellRenderer());
addTableActionListener(this);
}
private class SciDepartmentProjectsTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
private ItemSelectionModel m_itemModel;
public SciDepartmentProjectsTableModelBuilder(
ItemSelectionModel itemModel) {
m_itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
return new SciDepartmentProjectsTableModel(table,
state,
department);
}
}
private class SciDepartmentProjectsTableModel
implements TableModel {
private Table m_table;
private SciDepartmentProjectsCollection m_projects;
private SciProject m_project;
public SciDepartmentProjectsTableModel(Table table,
PageState state,
SciDepartment department) {
m_table = table;
m_projects = department.getProjects();
}
@Override
public int getColumnCount() {
return m_table.getColumnModel().size();
}
@Override
public boolean nextRow() {
boolean ret;
if ((m_projects != null) && m_projects.next()) {
m_project = m_projects.getProject();
ret = true;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return m_project.getTitle();
case 1:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project.remove").
localize();
case 2:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project.up").
localize();
case 3:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project.down").
localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return m_project.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.EDIT_ITEM,
department);
if (canEdit) {
SciProject project;
try {
project = new SciProject((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
s_log.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link =
new Link(String.format("%s (%s)",
value.toString(),
project.getLanguage()),
resolver.generateItemURL(state,
project,
section,
project.getVersion()));
return link;
} else {
SciProject project;
try {
project = new SciProject((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
s_log.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
Label label = new Label(String.format("%s (%s)",
value.toString(),
project.getLanguage()));
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.DELETE_ITEM,
department);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"sciorganization.ui.department.project."
+ "confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
private class UpCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(
Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
if (0 == row) {
Label label = new Label("");
return label;
} else {
ControlLink link = new ControlLink(
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project.up").
localize());
return link;
}
}
}
private class DownCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(
Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(
state);
SciDepartmentProjectsCollection projects =
department.getProjects();
if ((projects.size() - 1) == row) {
Label label = new Label("");
return label;
} else {
ControlLink link = new ControlLink(
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.project.down").
localize());
return link;
}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciProject project = new SciProject(
new BigDecimal(event.getRowKey().toString()));
SciDepartment department =
(SciDepartment) m_itemModel.getSelectedObject(state);
SciDepartmentProjectsCollection projects =
department.getProjects();
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
department.removeProject(project);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_UP)) {
projects.swapWithPrevious(project);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DOWN)) {
projects.swapWithNext(project);
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do.
}
}

View File

@ -1,159 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Label;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ContentTypeCollection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
/**
* Step for editing a {@link SciDepartment}.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentPropertiesStep
extends GenericOrganizationalUnitPropertiesStep {
public SciDepartmentPropertiesStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
super(itemModel, parent);
}
public static Component getSciDepartmentPropertySheet(
ItemSelectionModel itemModel) {
DomainObjectPropertySheet sheet =
(DomainObjectPropertySheet) GenericOrganizationalUnitPropertiesStep.
getGenericOrganizationalUnitPropertySheet(itemModel);
sheet.add(SciOrganizationGlobalizationUtil.globalize(
"sciorganizations.ui.department.shortdescription"),
SciDepartment.DEPARTMENT_SHORT_DESCRIPTION);
return sheet;
}
@Override
protected void addBasicProperties(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
SimpleEditStep basicProperties = new SimpleEditStep(itemModel,
parent,
EDIT_SHEET_NAME);
BasicPageForm editBasicSheet =
new SciDepartmentPropertyForm(itemModel, this);
basicProperties.add(EDIT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.edit_basic_properties").
localize(),
new WorkflowLockedComponentAccess(editBasicSheet,
itemModel),
editBasicSheet.getSaveCancelSection().
getCancelButton());
basicProperties.setDisplayComponent(
getSciDepartmentPropertySheet(itemModel));
getSegmentedPanel().addSegment(
new Label((String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.basic_properties").localize()),
basicProperties);
}
@Override
protected void addSteps(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
//super.addSteps(itemModel, parent);
SciOrganizationConfig config;
config = SciDepartment.getConfig();
if (!config.getDepartmentAddContactHide()) {
addStep(new GenericOrganizationalUnitContactPropertiesStep(itemModel,
parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.contacts"));
}
/*
if (!config.getDepartmentAddPersonHide()) {
addStep(new SciDepartmentMemberStep(itemModel,
parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.members"));
}
*/
/*
if (!config.getDepartmentAddSubDepartmentHide()) {
addStep(new SciDepartmentSubDepartmentsStep(itemModel, parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartments"));
}
*/
if (!config.getDepartmentSetSuperDepartmentHide()) {
addStep(new SciDepartmentSuperDepartmentStep(itemModel, parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.superdepartment"));
}
/*
if (!config.getDepartmentAddProjectHide()) {
addStep(new SciDepartmentProjectsStep(itemModel, parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.projects"));
}
*/
if (!config.getDepartmentSetOrganizationHide()) {
addStep(new SciDepartmentOrganizationStep(itemModel, parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.organization"));
}
/*
ContentTypeCollection contentTypes = ContentType.getAllContentTypes();
contentTypes.addFilter("associatedObjectType = :type").set(
"type",
"com.arsdigita.cms.contenttypes.Publication");
if ((!config.getDepartmentPublicationsHide())
&& (contentTypes.size() > 0)) {
/*
* Must add this step manually since the basic class is not
* SimpleEditStep...
*/
/* getSegmentedPanel().addSegment(new Label(SciOrganizationGlobalizationUtil.
globalize("sciorganization.ui.department.publications")),
new SciDepartmentPublicationsStep(
itemModel, parent));
}*/
}
}

View File

@ -1,109 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.form.TextArea;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
/**
* Form for editing the basic properties of a {@link SciDepartment}.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentPropertyForm
extends GenericOrganizationalUnitPropertyForm
implements FormProcessListener,
FormInitListener {
public static final String ID = "SciDepartmentEdit";
public SciDepartmentPropertyForm(ItemSelectionModel itemModel) {
this(itemModel, null);
}
public SciDepartmentPropertyForm(ItemSelectionModel itemModel,
SciDepartmentPropertiesStep step) {
super(itemModel, step);
addSubmissionListener(this);
}
@Override
public void addWidgets() {
super.addWidgets();
Label descLabel = new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganizations.ui.department.shortdescription"));
add(descLabel);
ParameterModel descParam = new StringParameter(
SciDepartment.DEPARTMENT_SHORT_DESCRIPTION);
TextArea desc = new TextArea(descParam);
desc.addValidationListener(new StringInRangeValidationListener(0, 500));
desc.setCols(75);
desc.setRows(5);
add(desc);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
super.init(fse);
FormData data = fse.getFormData();
SciDepartment department = (SciDepartment) super.initBasicWidgets(fse);
data.put(SciDepartment.DEPARTMENT_SHORT_DESCRIPTION,
department.getDepartmentShortDescription());
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
super.process(fse);
FormData data = fse.getFormData();
SciDepartment department =
(SciDepartment) super.processBasicWidgets(fse);
if ((department != null) && getSaveCancelSection().getSaveButton().
isSelected(fse.getPageState())) {
department.setDepartmentShortDescription(
(String) data.get(SciDepartment.DEPARTMENT_SHORT_DESCRIPTION));
department.save();
init(fse);
}
}
@Override
protected String getTitleLabel() {
return (String) SciOrganizationGlobalizationUtil.globalize(
"sciorganizations.ui.department.title").localize();
}
}

View File

@ -1,131 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Form for adding subdepartments to a {@link SciDepartment}.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentSubDepartmentAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private ItemSearchWidget m_itemSearch;
private final String ITEM_SEARCH = "subdepartments";
public SciDepartmentSubDepartmentAddForm(ItemSelectionModel itemModel) {
super("SubDepartmentsAddForm", itemModel);
}
@Override
protected void addWidgets() {
add(new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_subdepartment")));
m_itemSearch = new ItemSearchWidget(
ITEM_SEARCH,
ContentType.findByAssociatedObjectType(SciDepartment.class.
getName()));
add(m_itemSearch);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
if (!(this.getSaveCancelSection().getCancelButton().
isSelected(state))) {
SciDepartment subDepartment = (SciDepartment) data.get(ITEM_SEARCH);
subDepartment = (SciDepartment) subDepartment.getContentBundle().
getInstance(department.getLanguage());
department.addSubDepartment(subDepartment);
}
init(fse);
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_subdepartment.no_department_selected"));
return;
}
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
SciDepartment subDepartment = (SciDepartment) data.get(ITEM_SEARCH);
if (!(subDepartment.getContentBundle().hasInstance(department.getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_subdepartment.no_suitable_language_variant"));
return;
}
subDepartment = (SciDepartment) subDepartment.getContentBundle().getInstance(department.getLanguage());
if (department.getID().equals(subDepartment.getID())) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_subdepartment.adding_to_itself"));
return;
}
SciDepartmentSubDepartmentsCollection subDepartments = department.getSubDepartments();
subDepartments.addFilter(String.format("id = %s", subDepartment.getID().toString()));
if (subDepartments.size() > 0) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_subdepartment.already_added"));
}
subDepartments.close();
}
}

View File

@ -1,62 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Step for adding subdepartments to a {@link SciDepartment}.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentSubDepartmentsStep extends SimpleEditStep {
private String ADD_SUBDEPARTMENT_SHEET_NAME = "addSubDepartment";
public SciDepartmentSubDepartmentsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciDepartmentSubDepartmentsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addSubDepartmentSheet =
new SciDepartmentSubDepartmentAddForm(itemModel);
add(ADD_SUBDEPARTMENT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.add_subdepartment").localize(),
new WorkflowLockedComponentAccess(addSubDepartmentSheet, itemModel),
addSubDepartmentSheet.getSaveCancelSection().getCancelButton());
SciDepartmentSubDepartmentsTable subdepartmentTable =
new SciDepartmentSubDepartmentsTable(
itemModel);
setDisplayComponent(subdepartmentTable);
}
}

View File

@ -1,382 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.dispatcher.ObjectNotFoundException;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
/**
* Table for showing the subdepartments of a {@link SciDepartment}.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentSubDepartmentsTable
extends Table
implements TableActionListener {
private final Logger s_log = Logger.getLogger(
SciDepartmentSubDepartmentsTable.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private final String TABLE_COL_UP = "table_col_up";
private final String TABLE_COL_DOWN = "table_col_down";
private ItemSelectionModel m_itemModel;
public SciDepartmentSubDepartmentsTable(ItemSelectionModel itemModel) {
super();
m_itemModel = itemModel;
setEmptyView(
new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartments.none")));
TableColumnModel colModel = getColumnModel();
colModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment").localize(),
TABLE_COL_EDIT));
colModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment.remove").localize(),
TABLE_COL_DEL));
colModel.add(new TableColumn(
2,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment.up").localize(),
TABLE_COL_UP));
colModel.add(new TableColumn(
3,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment.down").localize(),
TABLE_COL_DOWN));
setModelBuilder(
new SciDepartmentSubDepartmentsTableModelBuilder(itemModel));
colModel.get(0).setCellRenderer(new EditCellRenderer());
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
colModel.get(2).setCellRenderer(new UpCellRenderer());
colModel.get(3).setCellRenderer(new DownCellRenderer());
addTableActionListener(this);
}
private class SciDepartmentSubDepartmentsTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
private ItemSelectionModel m_itemModel;
public SciDepartmentSubDepartmentsTableModelBuilder(
ItemSelectionModel itemModel) {
m_itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
return new SciDepartmentSubDepartmentsTableModel(table,
state,
department);
}
}
private class SciDepartmentSubDepartmentsTableModel
implements TableModel {
private Table m_table;
private SciDepartmentSubDepartmentsCollection m_subdepartments;
private SciDepartment m_subdepartment;
private SciDepartmentSubDepartmentsTableModel(Table table,
PageState state,
SciDepartment department) {
m_table = table;
m_subdepartments = department.getSubDepartments();
}
@Override
public int getColumnCount() {
return m_table.getColumnModel().size();
}
@Override
public boolean nextRow() {
boolean ret;
if ((m_subdepartments != null) && m_subdepartments.next()) {
m_subdepartment = m_subdepartments.getSubDepartment();
ret = true;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return m_subdepartment.getTitle();
case 1:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment.remove").
localize();
case 2:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment.up").
localize();
case 3:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment.down").
localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return m_subdepartment.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.EDIT_ITEM,
department);
if (canEdit) {
SciDepartment subDepartment;
try {
subDepartment = new SciDepartment(
(BigDecimal) key);
} catch (ObjectNotFoundException ex) {
s_log.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link = new Link(String.format("%s (%s)",
value.toString(),
subDepartment.getLanguage()),
resolver.generateItemURL(state,
subDepartment,
section,
subDepartment.
getVersion()));
return link;
} else {
SciDepartment subDepartment;
try {
subDepartment = new SciDepartment(
(BigDecimal) key);
} catch (ObjectNotFoundException ex) {
s_log.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
Label label = new Label(String.format("%s (%s)",
value.toString(),
subDepartment.getLanguage()));
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.DELETE_ITEM,
department);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"sciorganization.ui.department.subdepartment."
+ ".confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
private class UpCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(
Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
if (0 == row) {
Label label = new Label("");
return label;
} else {
ControlLink link = new ControlLink(
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment.up").
localize());
return link;
}
}
}
private class DownCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(
Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
SciDepartmentSubDepartmentsCollection subDepartments =
department.getSubDepartments();
if ((subDepartments.size() - 1) == row) {
Label label = new Label("");
return label;
} else {
ControlLink link = new ControlLink(
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.subdepartment.down").
localize());
return link;
}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciDepartment subdepartment = new SciDepartment(
new BigDecimal(event.getRowKey().toString()));
SciDepartment department =
(SciDepartment) m_itemModel.getSelectedObject(state);
SciDepartmentSubDepartmentsCollection subdepartments =
department.getSubDepartments();
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
department.removeSubDepartment(subdepartment);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_UP)) {
subdepartments.swapWithPrevious(subdepartment);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DOWN)) {
subdepartments.swapWithNext(subdepartment);
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do.
}
}

View File

@ -1,124 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Form for setting the superior department of a {@link SciDepartment}.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentSuperDepartmentForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private ItemSearchWidget m_itemSearch;
private final String ITEM_SEARCH = "superdepartment";
public SciDepartmentSuperDepartmentForm(ItemSelectionModel itemModel) {
super("SuperDepartmentSetForm", itemModel);
}
@Override
public void addWidgets() {
add(new Label((String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_superdepartment").
localize()));
m_itemSearch = new ItemSearchWidget(
ITEM_SEARCH,
ContentType.findByAssociatedObjectType(
SciDepartment.class.getName()));
add(m_itemSearch);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
if ((this.getSaveCancelSection().getSaveButton().isSelected(state))) {
SciDepartment superDepartment =
(SciDepartment) data.get(ITEM_SEARCH);
superDepartment = (SciDepartment) superDepartment.getContentBundle().
getInstance(department.getLanguage());
department.setSuperDepartment(superDepartment);
}
init(fse);
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_superdepartment.no_department_selected"));
return;
}
SciDepartment department = (SciDepartment) getItemSelectionModel().
getSelectedObject(state);
SciDepartment superDepartment =
(SciDepartment) data.get(ITEM_SEARCH);
if (!(superDepartment.getContentBundle().hasInstance(department.
getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_superdepartment.no_suitable_language_variant"));
return;
}
superDepartment = (SciDepartment) superDepartment.getContentBundle().
getInstance(department.getLanguage());
if (superDepartment.getID().equals(department.getID())) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.select_superdepartment.same_department"));
return;
}
}
}

View File

@ -1,282 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.dispatcher.ObjectNotFoundException;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
/**
* Sheet for showing the superior department of a {@link SciDepartment}.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentSuperDepartmentSheet
extends Table
implements TableActionListener {
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private ItemSelectionModel m_itemModel;
public SciDepartmentSuperDepartmentSheet(ItemSelectionModel itemModel) {
super();
m_itemModel = itemModel;
setEmptyView(
new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.superdepartment_none")));
TableColumnModel colModel = getColumnModel();
colModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.superdepartment").localize(),
TABLE_COL_EDIT));
colModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.superdepartment.remove").localize(),
TABLE_COL_DEL));
setModelBuilder(
new SciDepartmentSuperDepartmentSheetModelBuilder(itemModel));
colModel.get(0).setCellRenderer(new EditCellRenderer());
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(this);
}
private class SciDepartmentSuperDepartmentSheetModelBuilder
extends LockableImpl
implements TableModelBuilder {
private ItemSelectionModel m_itemModel;
public SciDepartmentSuperDepartmentSheetModelBuilder(
ItemSelectionModel itemModel) {
m_itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
return new SciDepartmentSuperDepartmentSheetModel(table,
state,
department);
}
}
private class SciDepartmentSuperDepartmentSheetModel
implements TableModel {
private Table m_table;
private SciDepartment m_superDepartment;
private boolean m_done;
public SciDepartmentSuperDepartmentSheetModel(Table table,
PageState state,
SciDepartment department) {
m_table = table;
m_superDepartment = department.getSuperDepartment();
if (m_superDepartment == null) {
m_done = false;
} else {
m_done = true;
}
}
@Override
public int getColumnCount() {
return m_table.getColumnModel().size();
}
@Override
public boolean nextRow() {
boolean ret;
if (m_done) {
ret = true;
m_done = false;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return m_superDepartment.getTitle();
case 1:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.superdepartment.remove").
localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return m_superDepartment.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state, Object value,
boolean isSelected,
Object key,
int row,
int column) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciDepartment department = (SciDepartment) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.EDIT_ITEM,
department);
if (canEdit) {
SciDepartment subDepartment;
try {
subDepartment = new SciDepartment((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link = new Link(String.format("%s (%s)",
value.toString(),
subDepartment.getLanguage()),
resolver.generateItemURL(state,
subDepartment,
section,
subDepartment.
getVersion()));
return link;
} else {
SciDepartment subDepartment;
try {
subDepartment = new SciDepartment((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
return new Label(value.toString());
}
Label label = new Label(
String.format("%s (%s)",
value.toString(),
subDepartment.getLanguage()));
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state, Object value,
boolean isSelected,
Object key,
int row,
int column) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciDepartment project = (SciDepartment) m_itemModel.
getSelectedObject(
state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.DELETE_ITEM,
project);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"sciorganization.ui.department.superdepartment."
+ ".confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciDepartment department =
(SciDepartment) m_itemModel.getSelectedObject(
state);
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
department.setSuperDepartment(null);
}
}
public void headSelected(TableActionEvent event) {
//Noting to do
}
}

View File

@ -1,65 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Step for setting the superior department of a {@link SciDepartment}.
*
* @author Jens Pelzetter
* @see SciDepartment
*/
public class SciDepartmentSuperDepartmentStep extends SimpleEditStep {
private String SET_SUPER_DEPARTMENT_STEP = "setSuperDepartment";
public SciDepartmentSuperDepartmentStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciDepartmentSuperDepartmentStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm setSuperDepartmentForm =
new SciDepartmentSuperDepartmentForm(itemModel);
add(SET_SUPER_DEPARTMENT_STEP,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.setSuperDepartment").localize(),
new WorkflowLockedComponentAccess(setSuperDepartmentForm,
itemModel),
setSuperDepartmentForm.getSaveCancelSection().
getCancelButton());
SciDepartmentSuperDepartmentSheet sheet =
new SciDepartmentSuperDepartmentSheet(
itemModel);
setDisplayComponent(sheet);
}
}

View File

@ -1,98 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.SegmentedPanel;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
/**
* Step for editing the basic properties of an {@link SciMember}.
*
* @author Jens Pelzetter
* @see SciMember
* @see GenericPerson
*/
public class SciMemberPropertiesStep extends SimpleEditStep {
public static final String EDIT_SHEET_NAME = "edit";
private SegmentedPanel segmentedPanel;
public SciMemberPropertiesStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
super(itemModel, parent);
segmentedPanel = new SegmentedPanel();
setDefaultEditKey(EDIT_SHEET_NAME);
SimpleEditStep basicProperties = new SimpleEditStep(itemModel,
parent,
EDIT_SHEET_NAME);
BasicPageForm editSheet;
editSheet = new SciMemberPropertyForm(itemModel, this);
basicProperties.add(EDIT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.member.edit_basic_properties").localize(),
new WorkflowLockedComponentAccess(editSheet,
itemModel),
editSheet.getSaveCancelSection().getCancelButton());
basicProperties.setDisplayComponent(getSciMemberPropertySheet(itemModel));
segmentedPanel.addSegment(new Label((String) SciOrganizationGlobalizationUtil.
globalize("scimember.ui.basic_properties").localize()),
basicProperties);
segmentedPanel.addSegment(new Label((String) SciOrganizationGlobalizationUtil.
globalize("scimember.ui.organizations").localize()),
new SciMemberSciOrganizationsStep(itemModel,
parent));
segmentedPanel.addSegment(new Label((String) SciOrganizationGlobalizationUtil.
globalize("scimember.ui.departments").localize()),
new SciMemberSciDepartmentsStep(itemModel,
parent));
segmentedPanel.addSegment(new Label((String) SciOrganizationGlobalizationUtil.
globalize("scimember.ui.projects").localize()),
new SciMemberSciProjectsStep(itemModel,
parent));
setDisplayComponent(segmentedPanel);
}
public static Component getSciMemberPropertySheet(
ItemSelectionModel itemModel) {
DomainObjectPropertySheet sheet;
sheet = (DomainObjectPropertySheet) GenericPersonPropertiesStep.
getGenericPersonPropertySheet(itemModel);
return sheet;
}
}

View File

@ -1,88 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciMember;
/**
* Form for editing the basic properties of a {@link SciMember}. This form
* extends the form for editing the basic properties of {@link GenericPerson}.
*
* @author Jens Pelzetter
* @see SciMember
* @see GenericPerson
* @see GenericPersonPropertyForm
*/
public class SciMemberPropertyForm
extends GenericPersonPropertyForm
implements FormInitListener,
FormSubmissionListener {
/*private static final Logger logger =
Logger.getLogger(SciMemberPropertyForm.class);
private SciMemberPropertiesStep m_step;
private CheckboxGroup m_associated;
private CheckboxGroup m_former;*/
public SciMemberPropertyForm(ItemSelectionModel itemModel) {
this(itemModel, null);
}
public SciMemberPropertyForm(ItemSelectionModel itemModel,
SciMemberPropertiesStep step) {
super(itemModel);
//m_step = step;
}
@Override
protected void addWidgets() {
super.addWidgets();
}
@Override
public void init(FormSectionEvent fse) {
super.init(fse);
FormData data = fse.getFormData();
SciMember member = (SciMember) super.initBasicWidgets(fse);
}
@Override
public void process(FormSectionEvent fse) {
super.process(fse);
PageState state = fse.getPageState();
SciMember member = (SciMember) super.processBasicWidgets(fse);
if ((member != null) && getSaveCancelSection().getSaveButton().
isSelected(fse.getPageState())) {
member.save();
init(fse);
}
}
}

View File

@ -1,231 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.RelationAttribute;
import com.arsdigita.cms.RelationAttributeCollection;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.contenttypes.SciMemberSciDepartmentsCollection;
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.globalization.GlobalizationHelper;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciMemberSciDepartmentAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener,
FormSubmissionListener {
private ItemSearchWidget itemSearch;
private final String ITEM_SEARCH = "sciMemberDepartment";
private SciMemberSciDepartmentsStep step;
private Label selectedDepartmentNameLabel;
public SciMemberSciDepartmentAddForm(ItemSelectionModel itemModel,
SciMemberSciDepartmentsStep step) {
super("sciMemberDepartmentAddForm", itemModel);
this.step = step;
}
@Override
public void addWidgets() {
add(new Label(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department.select_department")));
itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.
findByAssociatedObjectType(SciDepartment.class.getName()));
add(itemSearch);
selectedDepartmentNameLabel = new Label("");
add(selectedDepartmentNameLabel);
add(new Label(ContenttypesGlobalizationUtil.globalize(
"cms.contenttypes.ui.genericorgaunit.person.role")));
ParameterModel roleParam =
new StringParameter(
SciMemberSciDepartmentsCollection.MEMBER_ROLE);
SingleSelect roleSelect = new SingleSelect(roleParam);
roleSelect.addValidationListener(new NotNullValidationListener());
roleSelect.addOption(
new Option("",
new Label((String) ContenttypesGlobalizationUtil.
globalize("cms.ui.select_one").localize())));
RelationAttributeCollection roles = new RelationAttributeCollection(
"SciDepartmentRole");
roles.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
getLanguage());
while (roles.next()) {
RelationAttribute role;
role = roles.getRelationAttribute();
roleSelect.addOption(new Option(role.getKey(), role.getName()));
}
add(roleSelect);
add(new Label(ContenttypesGlobalizationUtil.globalize(
"cms.contenttypes.ui.genericorgaunit.person.status")));
ParameterModel statusModel =
new StringParameter(
SciMemberSciDepartmentsCollection.STATUS);
SingleSelect statusSelect = new SingleSelect(statusModel);
statusSelect.addValidationListener(new NotNullValidationListener());
statusSelect.addOption(new Option("",
new Label((String) ContenttypesGlobalizationUtil.
globalize("cms.ui.select_one").localize())));
RelationAttributeCollection statusColl =
new RelationAttributeCollection(
"GenericOrganizationalUnitMemberStatus");
statusColl.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
getLanguage());
while (statusColl.next()) {
RelationAttribute status;
status = statusColl.getRelationAttribute();
statusSelect.addOption(new Option(status.getKey(), status.getName()));
}
add(statusSelect);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciDepartment department;
String role;
String status;
department = step.getSelectedDepartment();
role = step.getSelectedDepartmentRole();
status = step.getSelectedDepartmentStatus();
if (department == null) {
itemSearch.setVisible(state, true);
selectedDepartmentNameLabel.setVisible(state, false);
} else {
data.put(ITEM_SEARCH, department);
data.put(SciMemberSciDepartmentsCollection.MEMBER_ROLE, role);
data.put(SciMemberSciDepartmentsCollection.STATUS, status);
itemSearch.setVisible(state, false);
selectedDepartmentNameLabel.setVisible(state, true);
selectedDepartmentNameLabel.setLabel(department.getTitle(), state);
}
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciMember member = (SciMember) getItemSelectionModel().getSelectedObject(
state);
if (this.getSaveCancelSection().getSaveButton().isSelected(state)) {
SciDepartment department;
department = step.getSelectedDepartment();
if (department == null) {
SciDepartment departmentToAdd = (SciDepartment) data.get(
ITEM_SEARCH);
departmentToAdd = (SciDepartment) departmentToAdd.
getContentBundle().getInstance(
member.getLanguage());
member.addDepartment(departmentToAdd,
(String) data.get(
SciMemberSciDepartmentsCollection.MEMBER_ROLE),
(String) data.get(
SciMemberSciDepartmentsCollection.STATUS));
} else {
SciMemberSciDepartmentsCollection departments;
departments = member.getDepartments();
while (departments.next()) {
if (departments.getDepartment().equals(department)) {
break;
}
}
departments.setRoleName((String) data.get(
SciMemberSciDepartmentsCollection.MEMBER_ROLE));
departments.setStatus((String) data.get(
SciMemberSciDepartmentsCollection.STATUS));
step.setSelectedDepartment(null);
step.setSelectedDepartmentRole(null);
step.setSelectedDepartmentStatus(null);
departments.close();
}
init(fse);
}
}
@Override
public void submitted(FormSectionEvent fse) throws FormProcessException {
if (getSaveCancelSection().getCancelButton().isSelected(
fse.getPageState())) {
step.setSelectedDepartment(null);
step.setSelectedDepartmentRole(null);
step.setSelectedDepartmentStatus(null);
init(fse);
}
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department.select_department.no_department_selected"));
return;
}
SciMember member = (SciMember) getItemSelectionModel().getSelectedObject(
state);
SciDepartment department = (SciDepartment) data.get(ITEM_SEARCH);
if (!(department.getContentBundle().hasInstance(member.getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department.select_department.no_suitable_language_variant"));
return;
}
department = (SciDepartment) department.getContentBundle().getInstance(member.
getLanguage());
SciMemberSciDepartmentsCollection departments = member.getDepartments();
departments.addFilter(String.format("id = %s", department.getID().toString()));
if (departments.size() > 0) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department.select_department.already_added"));
}
departments.close();
}
}

View File

@ -1,70 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciMemberSciDepartmentsStep extends SimpleEditStep {
private String MEMBER_ADD_DEPARTMENT_SHEET_NAME = "memberAddDepartment";
private SciDepartment selectedDepartment;
private String selectedDepartmentRole;
private String selectedDepartmentStatus;
public SciMemberSciDepartmentsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciMemberSciDepartmentsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addDepartmentForm = new SciMemberSciDepartmentAddForm(itemModel, this);
add(MEMBER_ADD_DEPARTMENT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize("scimember.ui.department.add").localize(),
new WorkflowLockedComponentAccess(addDepartmentForm, itemModel),
addDepartmentForm.getSaveCancelSection().getCancelButton());
setDisplayComponent(new SciMemberSciDepartmentsTable(itemModel, this));
}
protected SciDepartment getSelectedDepartment() {
return selectedDepartment;
}
protected void setSelectedDepartment(SciDepartment selectedDepartment) {
this.selectedDepartment = selectedDepartment;
}
protected String getSelectedDepartmentRole() {
return selectedDepartmentRole;
}
protected void setSelectedDepartmentRole(String selectedDepartmentRole) {
this.selectedDepartmentRole = selectedDepartmentRole;
}
protected String getSelectedDepartmentStatus() {
return selectedDepartmentStatus;
}
protected void setSelectedDepartmentStatus(String selectedDepartmentStatus) {
this.selectedDepartmentStatus = selectedDepartmentStatus;
}
protected void showEditComponent(PageState state) {
showComponent(state, MEMBER_ADD_DEPARTMENT_SHEET_NAME);
}
}

View File

@ -1,352 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.RelationAttributeCollection;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.contenttypes.SciMemberSciDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
/**
*
* @author Jens Pelzetter
*/
public class SciMemberSciDepartmentsTable
extends Table
implements TableActionListener {
private static final Logger logger = Logger.getLogger(
SciMemberSciDepartmentsTable.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_EDIT_LINK = "table_col_edit_link";
private final String TABLE_COL_DEL = "table_col_del";
private final String TABLE_COL_UP = "table_col_up";
private final String TABLE_COL_DOWN = "table_col_down";
private ItemSelectionModel itemModel;
private SciMemberSciDepartmentsStep step;
public SciMemberSciDepartmentsTable(ItemSelectionModel itemModel,
SciMemberSciDepartmentsStep step) {
super();
this.itemModel = itemModel;
this.step = step;
setEmptyView(new Label(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.departments.none")));
TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department").localize(),
TABLE_COL_EDIT));
columnModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department.role").localize()));
columnModel.add(new TableColumn(
2,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department.status").localize()));
columnModel.add(new TableColumn(
3,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department.edit").localize(),
TABLE_COL_EDIT_LINK));
columnModel.add(new TableColumn(
4,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.department.remove").localize(),
TABLE_COL_DEL));
setModelBuilder(
new SciMemberSciDepartmentsTableModelBuilder(itemModel));
columnModel.get(0).setCellRenderer(new EditCellRenderer());
columnModel.get(3).setCellRenderer(new EditLinkCellRenderer());
columnModel.get(4).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(this);
}
private class SciMemberSciDepartmentsTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
public SciMemberSciDepartmentsTableModelBuilder(
ItemSelectionModel itemModel) {
SciMemberSciDepartmentsTable.this.itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
return new SciMemberSciDepartmentsTableModel(table,
state,
member);
}
}
private class SciMemberSciDepartmentsTableModel implements TableModel {
private Table table;
private SciMemberSciDepartmentsCollection departments;
private SciDepartment department;
public SciMemberSciDepartmentsTableModel(Table table,
PageState state,
SciMember member) {
this.table = table;
this.departments = member.getDepartments();
}
@Override
public int getColumnCount() {
return table.getColumnModel().size();
}
@Override
public boolean nextRow() {
boolean ret;
if ((departments != null) && departments.next()) {
department = departments.getDepartment();
ret = true;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return department.getTitle();
case 1:
RelationAttributeCollection role =
new RelationAttributeCollection(
"SciDepartmentRole",
departments.getRoleName());
if (role.next()) {
String roleName = role.getName();
role.close();
return roleName;
} else {
return ContenttypesGlobalizationUtil.globalize(
"cms.ui.unknownRole").localize();
}
case 2:
RelationAttributeCollection status =
new RelationAttributeCollection(
"GenericOrganizationalUnitMemberStatus",
departments.getStatus());
if (status.next()) {
String statusName = status.getName();
status.close();
return statusName;
} else {
return ContenttypesGlobalizationUtil.globalize(
"cms.ui.unknownStatus").localize();
}
case 3:
return SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.departments.edit_assoc").localize();
case 4:
return SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.departments.remove").localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return department.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int column) {
com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
SciDepartment department;
try {
department = new SciDepartment((BigDecimal) key);
} catch (DataObjectNotFoundException ex) {
logger.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link = new Link(String.format("%s (%s)",
value.toString(),
department.getLanguage()),
resolver.generateItemURL(state,
department,
section,
department.
getVersion()));
return link;
} else {
SciDepartment department;
try {
department = new SciDepartment((BigDecimal) key);
} catch (DataObjectNotFoundException ex) {
logger.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
Label label = new Label(String.format("%s (%s)",
value.toString(),
department.getLanguage()));
return label;
}
}
}
private class EditLinkCellRenderer
extends LockableImpl
implements TableCellRenderer {
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int column) {
com.arsdigita.cms.SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"scimember.ui.department."
+ "confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciDepartment department = new SciDepartment(new BigDecimal(event.
getRowKey().toString()));
SciMember member = (SciMember) itemModel.getSelectedObject(state);
SciMemberSciDepartmentsCollection departments = member.getDepartments();
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
} else if (TABLE_COL_EDIT_LINK.equals(
column.getHeaderKey().toString())) {
while (departments.next()) {
if (departments.getDepartment().equals(department)) {
break;
}
}
step.setSelectedDepartment(departments.getDepartment());
step.setSelectedDepartmentRole(departments.getRoleName());
step.setSelectedDepartmentStatus(departments.getStatus());
departments.close();
step.showEditComponent(state);
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
member.removeDepartment(department);
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do
}
}

View File

@ -1,234 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.RelationAttribute;
import com.arsdigita.cms.RelationAttributeCollection;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.contenttypes.SciMemberSciOrganizationsCollection;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.globalization.GlobalizationHelper;
/**
*
* @author Jens Pelzetter
*/
public class SciMemberSciOrganizationAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener,
FormSubmissionListener {
private ItemSearchWidget itemSearch;
private final String ITEM_SEARCH = "sciMemberOrganization";
private SciMemberSciOrganizationsStep step;
private Label selectedOrganizationNameLabel;
public SciMemberSciOrganizationAddForm(ItemSelectionModel itemModel,
SciMemberSciOrganizationsStep step) {
super("sciMemberOrganizationAddForm", itemModel);
this.step = step;
}
@Override
protected void addWidgets() {
add(new Label(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.select_organization")));
itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.
findByAssociatedObjectType(SciOrganization.class.getName()));
add(itemSearch);
selectedOrganizationNameLabel = new Label("");
add(selectedOrganizationNameLabel);
add(new Label(ContenttypesGlobalizationUtil.globalize(
"cms.contenttypes.ui.genericorgaunit.person.role")));
ParameterModel roleParam =
new StringParameter(
SciMemberSciOrganizationsCollection.MEMBER_ROLE);
SingleSelect roleSelect = new SingleSelect(roleParam);
roleSelect.addValidationListener(new NotNullValidationListener());
roleSelect.addOption(
new Option("",
new Label((String) ContenttypesGlobalizationUtil.
globalize("cms.ui.select_one").localize())));
RelationAttributeCollection roles = new RelationAttributeCollection(
"SciOrganizationRole");
roles.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
getLanguage());
while (roles.next()) {
RelationAttribute role;
role = roles.getRelationAttribute();
roleSelect.addOption(new Option(role.getKey(), role.getName()));
}
add(roleSelect);
add(new Label(ContenttypesGlobalizationUtil.globalize(
"cms.contenttypes.ui.genericorgaunit.person.status")));
ParameterModel statusModel =
new StringParameter(
SciMemberSciOrganizationsCollection.STATUS);
SingleSelect statusSelect = new SingleSelect(statusModel);
statusSelect.addValidationListener(new NotNullValidationListener());
statusSelect.addOption(new Option("",
new Label((String) ContenttypesGlobalizationUtil.
globalize("cms.ui.select_one").localize())));
RelationAttributeCollection statusColl =
new RelationAttributeCollection(
"GenericOrganizationalUnitMemberStatus");
statusColl.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
getLanguage());
while (statusColl.next()) {
RelationAttribute status;
status = statusColl.getRelationAttribute();
statusSelect.addOption(new Option(status.getKey(), status.getName()));
}
add(statusSelect);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciOrganization orga;
String role;
String status;
orga = step.getSelectedOrganization();
role = step.getSelectedOrganizationRole();
status = step.getSelectedOrganizationStatus();
if (orga == null) {
itemSearch.setVisible(state, true);
selectedOrganizationNameLabel.setVisible(state, false);
} else {
data.put(ITEM_SEARCH, orga);
data.put(SciMemberSciOrganizationsCollection.MEMBER_ROLE, role);
data.put(SciMemberSciOrganizationsCollection.STATUS, status);
itemSearch.setVisible(state, false);
selectedOrganizationNameLabel.setVisible(state, true);
selectedOrganizationNameLabel.setLabel(orga.getTitle(), state);
}
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciMember member = (SciMember) getItemSelectionModel().getSelectedObject(
state);
if (this.getSaveCancelSection().getSaveButton().isSelected(state)) {
SciOrganization orga;
orga = step.getSelectedOrganization();
if (orga == null) {
SciOrganization orgaToAdd = (SciOrganization) data.get(
ITEM_SEARCH);
orgaToAdd = (SciOrganization) orgaToAdd.getContentBundle().
getInstance(member.getLanguage());
member.addOrganization(orga,
(String) data.get(
SciMemberSciOrganizationsCollection.MEMBER_ROLE),
(String) data.get(
SciMemberSciOrganizationsCollection.STATUS));
} else {
SciMemberSciOrganizationsCollection orgas;
orgas = member.getOrganizations();
while (orgas.next()) {
if (orgas.getOrganization().equals(orga)) {
break;
}
}
orgas.setRoleName((String) data.get(
SciMemberSciOrganizationsCollection.MEMBER_ROLE));
orgas.setStatus((String) data.get(
SciMemberSciOrganizationsCollection.STATUS));
step.setSelectedOrganization(null);
step.setSelectedOrganizationRole(null);
step.setSelectedOrganizationStatus(null);
orgas.close();
}
init(fse);
}
}
@Override
public void submitted(FormSectionEvent fse) throws FormProcessException {
if (getSaveCancelSection().getCancelButton().isSelected(
fse.getPageState())) {
step.setSelectedOrganization(null);
step.setSelectedOrganizationRole(null);
step.setSelectedOrganizationStatus(null);
init(fse);
}
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.select_organization.no_orga_selected"));
return;
}
SciMember member = (SciMember) getItemSelectionModel().getSelectedObject(
state);
SciOrganization orga = (SciOrganization) data.get(
ITEM_SEARCH);
if (!(orga.getContentBundle().hasInstance(member.getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.select_organization.no_suitable_language_variant"));
return;
}
orga = (SciOrganization) orga.getContentBundle().getInstance(member.
getLanguage());
SciMemberSciOrganizationsCollection organizations = member.
getOrganizations();
organizations.addFilter(String.format("id = %s",
orga.getID().toString()));
if (organizations.size() > 0) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.select_organization.already_added"));
}
organizations.close();
}
}

View File

@ -1,71 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
*
* @author Jens Pelzetter
*/
public class SciMemberSciOrganizationsStep extends SimpleEditStep {
private String MEMBER_ADD_ORGANIZATION_SHEET_NAME = "memberAddOrganization";
private SciOrganization selectedOrganization;
private String selectedOrganizationRole;
private String selectedOrganizationStatus;
public SciMemberSciOrganizationsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciMemberSciOrganizationsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addOrganizationForm = new SciMemberSciOrganizationAddForm(
itemModel,
this);
add(MEMBER_ADD_ORGANIZATION_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.add").localize(),
new WorkflowLockedComponentAccess(addOrganizationForm, itemModel),
addOrganizationForm.getSaveCancelSection().getCancelButton());
setDisplayComponent(new SciMemberSciOrganizationsTable(itemModel, this));
}
protected SciOrganization getSelectedOrganization() {
return selectedOrganization;
}
protected void setSelectedOrganization(SciOrganization organization) {
this.selectedOrganization = organization;
}
protected String getSelectedOrganizationRole() {
return selectedOrganizationRole;
}
protected void setSelectedOrganizationRole(String role) {
this.selectedOrganizationRole = role;
}
protected String getSelectedOrganizationStatus() {
return selectedOrganizationStatus;
}
protected void setSelectedOrganizationStatus(String status) {
this.selectedOrganizationStatus = status;
}
protected void showEditComponent(PageState state) {
showComponent(state, MEMBER_ADD_ORGANIZATION_SHEET_NAME);
}
}

View File

@ -1,354 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.RelationAttributeCollection;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.contenttypes.SciMemberSciOrganizationsCollection;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
/**
*
* @author Jens Pelzetter
*/
public class SciMemberSciOrganizationsTable
extends Table
implements TableActionListener {
private static final Logger logger = Logger.getLogger(
SciMemberSciOrganizationsTable.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_EDIT_LINK = "table_col_edit_link";
private final String TABLE_COL_DEL = "table_col_del";
private final String TABLE_COL_UP = "table_col_up";
private final String TABLE_COL_DOWN = "table_col_down";
private ItemSelectionModel itemModel;
private SciMemberSciOrganizationsStep step;
public SciMemberSciOrganizationsTable(ItemSelectionModel itemModel,
SciMemberSciOrganizationsStep step) {
super();
this.itemModel = itemModel;
this.step = step;
setEmptyView(new Label(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organizations.none")));
TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization").localize(),
TABLE_COL_EDIT));
columnModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.role").localize()));
columnModel.add(new TableColumn(
2,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.status").localize()));
columnModel.add(new TableColumn(
3,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.edit").localize(),
TABLE_COL_EDIT_LINK));
columnModel.add(new TableColumn(
4,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organization.remove").localize(),
TABLE_COL_DEL));
setModelBuilder(
new SciMemberSciOrganizationsTableModelBuilder(itemModel));
columnModel.get(0).setCellRenderer(new EditCellRenderer());
columnModel.get(3).setCellRenderer(new EditLinkCellRenderer());
columnModel.get(4).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(this);
}
private class SciMemberSciOrganizationsTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
public SciMemberSciOrganizationsTableModelBuilder(
ItemSelectionModel itemModel) {
SciMemberSciOrganizationsTable.this.itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
return new SciMemberSciOrganizationsTableModel(table,
state,
member);
}
}
private class SciMemberSciOrganizationsTableModel implements TableModel {
private Table table;
private SciMemberSciOrganizationsCollection organizations;
private SciOrganization organization;
public SciMemberSciOrganizationsTableModel(Table table,
PageState state,
SciMember member) {
this.table = table;
this.organizations = member.getOrganizations();
}
@Override
public int getColumnCount() {
return table.getColumnModel().size();
}
@Override
public boolean nextRow() {
boolean ret;
if ((organizations != null) && organizations.next()) {
organization = organizations.getOrganization();
ret = true;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return organization.getTitle();
case 1:
RelationAttributeCollection role =
new RelationAttributeCollection(
"SciOrganizationRole",
organizations.getRoleName());
if (role.next()) {
String roleName = role.getName();
role.close();
return roleName;
} else {
return ContenttypesGlobalizationUtil.globalize(
"cms.ui.unknownRole").localize();
}
case 2:
RelationAttributeCollection status =
new RelationAttributeCollection(
"GenericOrganizationalUnitMemberStatus",
organizations.getStatus());
if (status.next()) {
String statusName = status.getName();
status.close();
return statusName;
} else {
return ContenttypesGlobalizationUtil.globalize(
"cms.ui.unknownStatus").localize();
}
case 3:
return SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organizations.edit_assoc").localize();
case 4:
return SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.organizations.remove").localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return organization.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int column) {
com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
SciOrganization organization;
try {
organization = new SciOrganization((BigDecimal) key);
} catch (DataObjectNotFoundException ex) {
logger.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link = new Link(String.format("%s (%s)",
value.toString(),
organization.getLanguage()),
resolver.generateItemURL(state,
organization,
section,
organization.
getVersion()));
return link;
} else {
SciOrganization organization;
try {
organization = new SciOrganization((BigDecimal) key);
} catch (DataObjectNotFoundException ex) {
logger.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
Label label = new Label(String.format("%s (%s)",
value.toString(),
organization.getLanguage()));
return label;
}
}
}
private class EditLinkCellRenderer
extends LockableImpl
implements TableCellRenderer {
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int column) {
com.arsdigita.cms.SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"scimember.ui.organization."
+ "confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciOrganization organization = new SciOrganization(new BigDecimal(event.
getRowKey().toString()));
SciMember member = (SciMember) itemModel.getSelectedObject(state);
SciMemberSciOrganizationsCollection organizations = member.
getOrganizations();
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
} else if (TABLE_COL_EDIT_LINK.equals(
column.getHeaderKey().toString())) {
while (organizations.next()) {
if (organizations.getOrganization().equals(organization)) {
break;
}
}
step.setSelectedOrganization(organizations.getOrganization());
step.setSelectedOrganizationRole(organizations.getRoleName());
step.setSelectedOrganizationStatus(organizations.getStatus());
organizations.close();
step.showEditComponent(state);
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
member.removeOrganization(organization);
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do
}
}

View File

@ -1,225 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.RelationAttribute;
import com.arsdigita.cms.RelationAttributeCollection;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.contenttypes.SciMemberSciProjectsCollection;
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.globalization.GlobalizationHelper;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciMemberSciProjectAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener,
FormSubmissionListener {
private ItemSearchWidget itemSearch;
private final String ITEM_SEARCH = "sciMemberProject";
private SciMemberSciProjectsStep step;
private Label selectedProjectNameLabel;
public SciMemberSciProjectAddForm(ItemSelectionModel itemModel,
SciMemberSciProjectsStep step) {
super("sciMemberProjectAddForm", itemModel);
this.step = step;
}
@Override
public void addWidgets() {
add(new Label(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project.select_project")));
itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.
findByAssociatedObjectType(SciProject.class.getName()));
add(itemSearch);
selectedProjectNameLabel = new Label("");
add(selectedProjectNameLabel);
add(new Label(ContenttypesGlobalizationUtil.globalize(
"cms.contenttypes.ui.genericorgaunit.person.role")));
ParameterModel roleParam =
new StringParameter(
SciMemberSciProjectsCollection.MEMBER_ROLE);
SingleSelect roleSelect = new SingleSelect(roleParam);
roleSelect.addValidationListener(new NotNullValidationListener());
roleSelect.addOption(
new Option("",
new Label((String) ContenttypesGlobalizationUtil.
globalize("cms.ui.select_one").localize())));
RelationAttributeCollection roles = new RelationAttributeCollection(
"SciProjectRole");
roles.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
getLanguage());
while (roles.next()) {
RelationAttribute role;
role = roles.getRelationAttribute();
roleSelect.addOption(new Option(role.getKey(), role.getName()));
}
add(roleSelect);
add(new Label(ContenttypesGlobalizationUtil.globalize(
"cms.contenttypes.ui.genericorgaunit.person.status")));
ParameterModel statusModel =
new StringParameter(
SciMemberSciProjectsCollection.STATUS);
SingleSelect statusSelect = new SingleSelect(statusModel);
statusSelect.addValidationListener(new NotNullValidationListener());
statusSelect.addOption(new Option("",
new Label((String) ContenttypesGlobalizationUtil.
globalize("cms.ui.select_one").localize())));
RelationAttributeCollection statusColl =
new RelationAttributeCollection(
"GenericOrganizationalUnitMemberStatus");
statusColl.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
getLanguage());
while (statusColl.next()) {
RelationAttribute status;
status = statusColl.getRelationAttribute();
statusSelect.addOption(new Option(status.getKey(), status.getName()));
}
add(statusSelect);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciProject project;
String role;
String status;
project = step.getSelectedProject();
role = step.getSelectedProjectRole();
status = step.getSelectedProjectStatus();
if (project == null) {
itemSearch.setVisible(state, true);
selectedProjectNameLabel.setVisible(state, false);
} else {
data.put(ITEM_SEARCH, project);
data.put(SciMemberSciProjectsCollection.MEMBER_ROLE, role);
data.put(SciMemberSciProjectsCollection.STATUS, status);
itemSearch.setVisible(state, false);
selectedProjectNameLabel.setVisible(state, true);
selectedProjectNameLabel.setLabel(project.getTitle(), state);
}
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciMember member = (SciMember) getItemSelectionModel().getSelectedObject(
state);
if (this.getSaveCancelSection().getSaveButton().isSelected(state)) {
SciProject project;
project = step.getSelectedProject();
if (project == null) {
SciProject projectToAdd = (SciProject) data.get(ITEM_SEARCH);
projectToAdd = (SciProject) projectToAdd.getContentBundle().
getInstance(member.getLanguage());
member.addProject(projectToAdd,
(String) data.get(
SciMemberSciProjectsCollection.MEMBER_ROLE),
(String) data.get(
SciMemberSciProjectsCollection.STATUS));
} else {
SciMemberSciProjectsCollection projects;
projects = member.getProjects();
while (projects.next()) {
if (projects.getProject().equals(project)) {
break;
}
}
projects.setRoleName((String) data.get(
SciMemberSciProjectsCollection.MEMBER_ROLE));
projects.setStatus((String) data.get(
SciMemberSciProjectsCollection.STATUS));
step.setSelectedProject(null);
step.setSelectedProjectRole(null);
step.setSelectedProjectStatus(null);
projects.close();
}
init(fse);
}
}
@Override
public void submitted(FormSectionEvent fse) throws FormProcessException {
if (getSaveCancelSection().getCancelButton().isSelected(
fse.getPageState())) {
step.setSelectedProject(null);
step.setSelectedProjectRole(null);
step.setSelectedProjectStatus(null);
init(fse);
}
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project.select_project.no_project_selected"));
return;
}
SciMember member = (SciMember) getItemSelectionModel().getSelectedObject(
state);
SciProject project = (SciProject) data.get(ITEM_SEARCH);
if (!(project.getContentBundle().hasInstance(member.getLanguage()))) {
data.addError(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project.select_project.no_suitable_language_variant"));
return;
}
project = (SciProject) project.getContentBundle().getInstance(member.getLanguage());
SciMemberSciProjectsCollection projects = member.getProjects();
projects.addFilter(String.format("id = %s", project.getID().toString()));
if (projects.size() > 0) {
data.addError(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project.select_project.already_added"));
}
projects.close();
}
}

View File

@ -1,70 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciMemberSciProjectsStep extends SimpleEditStep {
private String MEMBER_ADD_project_SHEET_NAME = "memberAddproject";
private SciProject selectedProject;
private String selectedProjectRole;
private String selectedProjectStatus;
public SciMemberSciProjectsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciMemberSciProjectsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addprojectForm = new SciMemberSciProjectAddForm(itemModel, this);
add(MEMBER_ADD_project_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize("scimember.ui.project.add").localize(),
new WorkflowLockedComponentAccess(addprojectForm, itemModel),
addprojectForm.getSaveCancelSection().getCancelButton());
setDisplayComponent(new SciMemberSciProjectsTable(itemModel, this));
}
protected SciProject getSelectedProject() {
return selectedProject;
}
protected void setSelectedProject(SciProject selectedProject) {
this.selectedProject = selectedProject;
}
protected String getSelectedProjectRole() {
return selectedProjectRole;
}
protected void setSelectedProjectRole(String selectedProjectRole) {
this.selectedProjectRole = selectedProjectRole;
}
protected String getSelectedProjectStatus() {
return selectedProjectStatus;
}
protected void setSelectedProjectStatus(String selectedProjectStatus) {
this.selectedProjectStatus = selectedProjectStatus;
}
protected void showEditComponent(PageState state) {
showComponent(state, MEMBER_ADD_project_SHEET_NAME);
}
}

View File

@ -1,352 +0,0 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.RelationAttributeCollection;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.contenttypes.SciMemberSciProjectsCollection;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
/**
*
* @author Jens Pelzetter
*/
public class SciMemberSciProjectsTable
extends Table
implements TableActionListener {
private static final Logger logger = Logger.getLogger(
SciMemberSciProjectsTable.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_EDIT_LINK = "table_col_edit_link";
private final String TABLE_COL_DEL = "table_col_del";
private final String TABLE_COL_UP = "table_col_up";
private final String TABLE_COL_DOWN = "table_col_down";
private ItemSelectionModel itemModel;
private SciMemberSciProjectsStep step;
public SciMemberSciProjectsTable(ItemSelectionModel itemModel,
SciMemberSciProjectsStep step) {
super();
this.itemModel = itemModel;
this.step = step;
setEmptyView(new Label(SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.projects.none")));
TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project").localize(),
TABLE_COL_EDIT));
columnModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project.role").localize()));
columnModel.add(new TableColumn(
2,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project.status").localize()));
columnModel.add(new TableColumn(
3,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project.edit").localize(),
TABLE_COL_EDIT_LINK));
columnModel.add(new TableColumn(
4,
SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.project.remove").localize(),
TABLE_COL_DEL));
setModelBuilder(
new SciMemberSciProjectsTableModelBuilder(itemModel));
columnModel.get(0).setCellRenderer(new EditCellRenderer());
columnModel.get(3).setCellRenderer(new EditLinkCellRenderer());
columnModel.get(4).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(this);
}
private class SciMemberSciProjectsTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
public SciMemberSciProjectsTableModelBuilder(
ItemSelectionModel itemModel) {
SciMemberSciProjectsTable.this.itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
return new SciMemberSciProjectsTableModel(table,
state,
member);
}
}
private class SciMemberSciProjectsTableModel implements TableModel {
private Table table;
private SciMemberSciProjectsCollection projects;
private SciProject project;
public SciMemberSciProjectsTableModel(Table table,
PageState state,
SciMember member) {
this.table = table;
this.projects = member.getProjects();
}
@Override
public int getColumnCount() {
return table.getColumnModel().size();
}
@Override
public boolean nextRow() {
boolean ret;
if ((projects != null) && projects.next()) {
project = projects.getProject();
ret = true;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return project.getTitle();
case 1:
RelationAttributeCollection role =
new RelationAttributeCollection(
"SciProjectRole",
projects.getRoleName());
if (role.next()) {
String roleName = role.getName();
role.close();
return roleName;
} else {
return ContenttypesGlobalizationUtil.globalize(
"cms.ui.unknownRole").localize();
}
case 2:
RelationAttributeCollection status =
new RelationAttributeCollection(
"GenericOrganizationalUnitMemberStatus",
projects.getStatus());
if (status.next()) {
String statusName = status.getName();
status.close();
return statusName;
} else {
return ContenttypesGlobalizationUtil.globalize(
"cms.ui.unknownStatus").localize();
}
case 3:
return SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.projects.edit_assoc").localize();
case 4:
return SciOrganizationGlobalizationUtil.globalize(
"scimember.ui.projects.remove").localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return project.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int column) {
com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
SciProject project;
try {
project = new SciProject((BigDecimal) key);
} catch (DataObjectNotFoundException ex) {
logger.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link = new Link(String.format("%s (%s)",
value.toString(),
project.getLanguage()),
resolver.generateItemURL(state,
project,
section, project.
getVersion()));
return link;
} else {
SciProject project;
try {
project = new SciProject((BigDecimal) key);
} catch (DataObjectNotFoundException ex) {
logger.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
Label label = new Label(String.format("%s (%s)",
value.toString(),
project.getLanguage()));
return label;
}
}
}
private class EditLinkCellRenderer
extends LockableImpl
implements TableCellRenderer {
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int column) {
com.arsdigita.cms.SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
SciMember member = (SciMember) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
member);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"scimember.ui.project."
+ "confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciProject project = new SciProject(new BigDecimal(event.getRowKey().
toString()));
SciMember member = (SciMember) itemModel.getSelectedObject(state);
SciMemberSciProjectsCollection projects = member.getProjects();
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
} else if (TABLE_COL_EDIT_LINK.equals(
column.getHeaderKey().toString())) {
while (projects.next()) {
if (projects.getProject().equals(project)) {
break;
}
}
step.setSelectedProject(projects.getProject());
step.setSelectedProjectRole(projects.getRoleName());
step.setSelectedProjectStatus(projects.getStatus());
projects.close();
step.showEditComponent(state);
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
member.removeProject(project);
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do
}
}

View File

@ -1,796 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.GenericPersonContactCollection;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.OID;
import com.arsdigita.xml.Element;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.apache.log4j.Logger;
/**
* Base class for all panels of the sci-types-organization module. The panels
* are displaying the information of an organization type (
* <code>SciOrganization</code>, <code>SciDepartment</code>,
* <code>SciProject</code>) similar to the <code>MultiPartArticle</code>. For
* each information, e.g. members, there is a link, which replaces the
* information shown. To use this as an index item, a special template is
* necessary. An example of such a template can be found in the ccm-zes-aplaws
* module.
*
* @see SciOrganizationPanel
* @see SciDepartmentPanel
* @see SciProjectPanel
* @author Jens Pelzetter
*/
public abstract class SciOrganizationBasePanel
extends GenericOrganizationalUnitPanel {
private final static Logger s_log = Logger.getLogger(
SciOrganizationBasePanel.class);
protected class MemberListItem {
private OID oid;
private String surname;
private String givenName;
private String titlePre;
private String titlePost;
private Date birthdate;
private String gender;
private DataCollection contacts;
//private GenericPerson member;
private String role;
private String status;
public MemberListItem(final GenericPerson member,
final String role,
final String status) {
/*this.member = member;
this.role = role;
this.status = status;*/
this(member.getOID(),
member.getSurname(),
member.getGivenName(),
member.getTitlePre(),
member.getTitlePost(),
member.getBirthdate(),
member.getGender(),
null,
role,
status);
}
public MemberListItem(final OID oid,
final String surname,
final String givenName,
final String titlePre,
final String titlePost,
final Date birthdate,
final String gender,
final DataCollection contacts,
final String role,
final String status) {
this.oid = oid;
this.surname = surname;
this.givenName = givenName;
this.titlePre = titlePre;
this.titlePost = titlePost;
this.birthdate = birthdate;
this.gender = gender;
this.contacts = contacts;
this.role = role;
this.status = status;
}
/*public GenericPerson getMember() {
return member;
}*/
public OID getOID() {
return oid;
}
public Date getBirthdate() {
return birthdate;
}
public DataCollection getContacts() {
return contacts;
}
public String getGender() {
return gender;
}
public String getGivenName() {
return givenName;
}
public String getSurname() {
return surname;
}
public String getTitlePost() {
return titlePost;
}
public String getTitlePre() {
return titlePre;
}
public String getRole() {
return role;
}
public String getStatus() {
return status;
}
/*@Override
public boolean equals(Object obj) {
if (obj instanceof MemberListItem) {
MemberListItem other = (MemberListItem) obj;
return member.equals(other.getMember());
} else {
return false;
}
}*/
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final MemberListItem other = (MemberListItem) obj;
if ((this.surname == null) ? (other.surname != null)
: !this.surname.equals(other.surname)) {
return false;
}
if ((this.givenName == null) ? (other.givenName != null)
: !this.givenName.equals(other.givenName)) {
return false;
}
if ((this.titlePre == null) ? (other.titlePre != null)
: !this.titlePre.equals(other.titlePre)) {
return false;
}
if ((this.titlePost == null) ? (other.titlePost != null)
: !this.titlePost.equals(other.titlePost)) {
return false;
}
if (this.birthdate != other.birthdate && (this.birthdate == null
|| !this.birthdate.equals(
other.birthdate))) {
return false;
}
if ((this.gender == null) ? (other.gender != null)
: !this.gender.equals(other.gender)) {
return false;
}
if ((this.role == null) ? (other.role != null)
: !this.role.equals(other.role)) {
return false;
}
if ((this.status == null) ? (other.status != null)
: !this.status.equals(other.status)) {
return false;
}
return true;
}
/*@Override
public int hashCode() {
return member.hashCode();
}*/
@Override
public int hashCode() {
int hash = 3;
hash =
41 * hash + (this.surname != null ? this.surname.hashCode() : 0);
hash =
41 * hash + (this.givenName != null ? this.givenName.hashCode() : 0);
hash =
41 * hash + (this.titlePre != null ? this.titlePre.hashCode() : 0);
hash =
41 * hash + (this.titlePost != null ? this.titlePost.hashCode() : 0);
hash =
41 * hash + (this.birthdate != null ? this.birthdate.hashCode() : 0);
hash =
41 * hash + (this.gender != null ? this.gender.hashCode() : 0);
hash = 41 * hash + (this.role != null ? this.role.hashCode() : 0);
hash =
41 * hash + (this.status != null ? this.status.hashCode() : 0);
return hash;
}
}
protected class MemberListItemComparator
implements Comparator<MemberListItem> {
public int compare(MemberListItem member1, MemberListItem member2) {
int result = 0;
/*result =
member1.getMember().getSurname().compareToIgnoreCase(member2.
getMember().
getSurname());
if (result == 0) {
result = member1.getMember().getGivenName().compareTo(
member2.getMember().getGivenName());
}*/
result =
member1.getSurname().compareToIgnoreCase(member2.getSurname());
if (result == 0) {
result =
member1.getGivenName().compareTo(member2.getGivenName());
}
return result;
}
}
protected class SciProjectComparator implements Comparator<SciProject> {
public int compare(SciProject project1, SciProject project2) {
/*int result = 0;
if (project1.getBegin() == null) {
return -1;
} else if (project2.getBegin() == null) {
return 1;
} else {
result = project1.getBegin().compareTo(project2.getBegin());
}
if (result == 0) {
if (project1.getEnd() == null) {
return -1;
} else if (project2.getEnd() == null) {
return 1;
} else if ((project1.getEnd() == null) && (project2.getEnd()
== null)) {
return 0;
} else {
result = project1.getEnd().compareTo(project2.getEnd());
}
}
return result;*/
return project1.getTitle().compareTo(project2.getTitle());
}
}
protected List<String> getFiltersForActiveMembers() {
List<String> filters;
filters = new LinkedList<String>();
filters.add("link.status = 'active'");
return filters;
}
protected List<String> getFiltersForAssociatedMembers() {
List<String> filters;
filters = new LinkedList<String>();
filters.add("link.status = 'associated'");
return filters;
}
protected List<String> getFiltersForFormerAssociatedMembers() {
List<String> filters;
filters = new LinkedList<String>();
filters.add("link.status = 'associatedFormer'");
return filters;
}
protected List<String> getFiltersForFormerMembers() {
List<String> filters;
filters = new LinkedList<String>();
//filters.add("link.status = 'former'");
filters.add("lower(link.status) like lower('%former%')");
return filters;
}
protected List<String> getFiltersForOngoingProjects() {
List<String> filters;
Calendar today;
filters = new LinkedList<String>();
today = new GregorianCalendar();
filters.add(String.format(
"(projectbegin IS NOT null) AND (projectend > '%d-%02d-%02d' OR projectend IS null)",
today.get(java.util.Calendar.YEAR),
today.get(java.util.Calendar.MONTH)
+ 1,
today.get(java.util.Calendar.DAY_OF_MONTH)));
return filters;
}
protected List<String> getFiltersForFinishedProjects() {
List<String> filters;
Calendar today;
filters = new LinkedList<String>();
today = new GregorianCalendar();
filters.add(String.format("projectend <= '%d-%02d-%02d'",
today.get(java.util.Calendar.YEAR),
today.get(java.util.Calendar.MONTH)
+ 1,
today.get(java.util.Calendar.DAY_OF_MONTH)));
return filters;
}
protected void generateMemberXML(final MemberListItem person,
final Element parent,
final String roleName,
final String status,
final PageState state) {
Element memberElem = parent.newChildElement("member");
memberElem.addAttribute("role", roleName);
memberElem.addAttribute("status", status);
memberElem.addAttribute("oid", person.getOID().toString());
//Element title = memberElem.newChildElement("title");
//title.setText(person.getTitle());
if ((person.getTitlePre() != null)
&& !person.getTitlePre().isEmpty()) {
Element titlePre = memberElem.newChildElement("titlePre");
titlePre.setText(person.getTitlePre());
}
Element surname = memberElem.newChildElement("surname");
surname.setText(person.getSurname());
Element givenName = memberElem.newChildElement("givenname");
givenName.setText(person.getGivenName());
if ((person.getTitlePost() != null)
&& !person.getTitlePost().isEmpty()) {
Element titlePost = memberElem.newChildElement("titlePost");
titlePost.setText(person.getTitlePost());
}
if ((person.getContacts() != null)
&& (person.getContacts().size() > 0)) {
GenericPersonContactCollection contacts;
contacts = new GenericPersonContactCollection(person.getContacts());
Element contactsElem =
memberElem.newChildElement("contacts");
while (contacts.next()) {
generateContactXML(
contacts.getContactType(),
contacts.getPerson(),
contacts.getContactEntries(),
contacts.getAddress(),
contactsElem,
state,
contacts.getContactOrder(),
false);
}
}
}
@Deprecated
protected void generateMemberXML(final GenericPerson person,
final Element parent,
final String roleName,
final String status,
final PageState state) {
Element memberElem = parent.newChildElement("member");
memberElem.addAttribute("role", roleName);
memberElem.addAttribute("status", status);
memberElem.addAttribute("oid", person.getOID().toString());
Element title = memberElem.newChildElement("title");
title.setText(person.getTitle());
if ((person.getTitlePre() != null)
&& !person.getTitlePre().isEmpty()) {
Element titlePre = memberElem.newChildElement("titlePre");
titlePre.setText(person.getTitlePre());
}
Element surname = memberElem.newChildElement("surname");
surname.setText(person.getSurname());
Element givenName = memberElem.newChildElement("givenname");
givenName.setText(person.getGivenName());
if ((person.getTitlePost() != null)
&& !person.getTitlePost().isEmpty()) {
Element titlePost = memberElem.newChildElement("titlePost");
titlePost.setText(person.getTitlePost());
}
if ((person.getContacts() != null)
&& (person.getContacts().size() > 0)) {
GenericPersonContactCollection contacts;
contacts = person.getContacts();
Element contactsElem =
memberElem.newChildElement("contacts");
while (contacts.next()) {
generateContactXML(
contacts.getContactType(),
contacts.getPerson(),
contacts.getContactEntries(),
contacts.getAddress(),
contactsElem,
state,
contacts.getContactOrder(),
false);
}
}
}
protected void addMember(
final GenericOrganizationalUnitPersonCollection persons,
final List<MemberListItem> members) {
addMember(persons.getOID(),
persons.getSurname(),
persons.getGivenName(),
persons.getTitlePre(),
persons.getTitlePost(),
persons.getBirthdate(),
persons.getGender(),
persons.getContacts(),
persons.getRoleName(),
persons.getStatus(),
members);
}
private void addMember(final OID oid,
final String surname,
final String givenName,
final String titlePre,
final String titlePost,
final Date birthdate,
final String gender,
final DataCollection contacts,
final String role,
final String status,
final List<MemberListItem> members) {
MemberListItem listItem = new MemberListItem(oid,
surname,
givenName,
titlePre,
titlePost,
birthdate,
gender,
contacts,
role,
status);
if (!members.contains(listItem)) {
members.add(listItem);
}
}
@Deprecated
protected void addMember(final GenericPerson person,
final String roleName,
final String status,
final List<MemberListItem> members) {
MemberListItem listItem = new MemberListItem(person, roleName, status);
if (!members.contains(listItem)) {
members.add(listItem);
}
}
protected void mergeMembers(
final SciDepartmentSubDepartmentsCollection subDepartments,
final List<MemberListItem> members,
final List<String> filters) {
while (subDepartments.next()) {
SciDepartment subDepartment = subDepartments.getSubDepartment();
GenericOrganizationalUnitPersonCollection departmentMembers;
departmentMembers = subDepartment.getPersons();
for (String filter : filters) {
departmentMembers.addFilter(filter);
}
while (departmentMembers.next()) {
addMember(departmentMembers.getOID(),
departmentMembers.getSurname(),
departmentMembers.getGivenName(),
departmentMembers.getTitlePre(),
departmentMembers.getTitlePost(),
departmentMembers.getBirthdate(),
departmentMembers.getGender(),
null,
departmentMembers.getRoleName(),
departmentMembers.getStatus(),
members);
}
SciDepartmentSubDepartmentsCollection subSubDepartments;
subSubDepartments = subDepartment.getSubDepartments();
if ((subSubDepartments != null)
&& (subSubDepartments.size() > 0)) {
mergeMembers(subSubDepartments, members, filters);
}
}
}
protected void generateMembersListXML(final List<MemberListItem> members,
final Element parent,
final PageState state) {
Set<MemberListItem> membersSet;
List<MemberListItem> membersWithoutDoubles;
membersSet = new HashSet<MemberListItem>(members);
membersWithoutDoubles = new LinkedList<MemberListItem>(membersSet);
Collections.sort(membersWithoutDoubles, new MemberListItemComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(membersWithoutDoubles.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, membersWithoutDoubles.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(
parent, pageNumber, pageCount, begin, end, count,
membersWithoutDoubles.size());
List<MemberListItem> membersWithoutDoublesToShow =
membersWithoutDoubles.subList((int) begin,
(int) end);
Element membersWithoutDoublesElem = parent.newChildElement(
"members");
for (MemberListItem memberItem : membersWithoutDoublesToShow) {
generateMemberXML(memberItem,
membersWithoutDoublesElem,
memberItem.getRole(),
memberItem.getStatus(),
state);
}
}
protected void generateProjectXML(final SciProject project,
final Element parent,
final PageState state) {
Element projectElem = parent.newChildElement("project");
projectElem.addAttribute("oid", project.getOID().toString());
Element title = projectElem.newChildElement("title");
title.setText(project.getTitle());
Element beginElem = projectElem.newChildElement("projectbegin");
if ((project.getAddendum() != null)
&& !(project.getAddendum().isEmpty())) {
Element addendum = projectElem.newChildElement("addendum");
addendum.setText(project.getAddendum());
}
if ((project.getProjectShortDescription() != null)
&& !(project.getProjectShortDescription().isEmpty())) {
Element shortDesc = projectElem.newChildElement("shortDescription");
shortDesc.setText(project.getProjectShortDescription());
}
GenericOrganizationalUnitPersonCollection members;
members = project.getPersons();
members.addOrder("surname asc, givenname asc");
if (members.size() > 0) {
Element membersElem = projectElem.newChildElement("members");
while (members.next()) {
generateMemberXML(new MemberListItem(members.getOID(),
members.getSurname(),
members.getGivenName(),
members.getTitlePre(),
members.getTitlePost(),
members.getBirthdate(),
members.getGender(),
null, members.getRoleName(),
members.getStatus()),
membersElem,
members.getRoleName(),
members.getStatus(),
state);
}
}
GenericOrganizationalUnitContactCollection contacts;
contacts = project.getContacts();
if (contacts.size() > 0) {
Element contactsElem = projectElem.newChildElement("contacts");
while (contacts.next()) {
generateContactXML(contacts.getContactType(),
contacts.getPerson(),
contacts.getContactEntries(),
contacts.getAddress(),
contactsElem,
state,
Integer.toString(contacts.getContactOrder()),
true);
}
}
}
protected void mergeProjects(
final SciDepartmentSubDepartmentsCollection subDepartments,
final List<SciProject> projects,
final List<String> filters) {
while (subDepartments.next()) {
SciDepartmentProjectsCollection departmentProjects;
departmentProjects = subDepartments.getSubDepartment().getProjects();
if ((filters != null)
&& !(filters.isEmpty())) {
for (String filter : filters) {
departmentProjects.addFilter(filter);
}
}
while (departmentProjects.next()) {
projects.add(departmentProjects.getProject());
}
SciDepartmentSubDepartmentsCollection subSubDepartments;
subSubDepartments = subDepartments.getSubDepartment().
getSubDepartments();
if ((subSubDepartments != null)
&& subSubDepartments.size() > 0) {
mergeProjects(subSubDepartments, projects, filters);
}
}
}
/**
* Create the XML for the list of publications, using the special
* RelatedLinks passed by the caller. To avoid a dependency to the
* sci-publications module, we are using only methods from
* {@link DataObject}, {@link DomainObject}, {@link DataCollection} and
* {@link DomainCollection}.
*
* @param links Links to the publications
* @param parent The parent XML element for the XML created by this method
* @param state The current page state.
*/
/* protected void generatePublicationsXML(final DataCollection links,
final Element parent,
final PageState state) {
RelatedLink link;
ContentItem publication;
List<ContentItem> publications;
publications = new ArrayList<ContentItem>();
while (links.next()) {
link = new RelatedLink(links.getDataObject());
publication = link.getTargetItem();
publications.add(publication);
}
Collections.sort(publications, new Comparator<ContentItem>() {
public int compare(ContentItem o1, ContentItem o2) {
Integer year1;
Integer year2;
if ((o1 == null) && o2 == null) {
return 0;
} else if ((o1 == null) && (o2 != null)) {
return -1;
} else if ((o1 != null) && o2 == null) {
return 1;
}
year1 = (Integer) o1.get("yearOfPublication");
year2 = (Integer) o2.get("yearOfPublication");
if (year1.compareTo(year2)
== 0) {
String title1;
String title2;
title1 = (String) o1.get("title");
title2 = (String) o2.get("title");
return title1.compareTo(title2);
} else {
return (year1.compareTo(year2)) * -1;
}
}
});
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(publications.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, publications.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(parent, pageNumber, pageCount, begin, end, count,
end);
List<ContentItem> publicationsToShow = publications.subList((int) begin,
(int) end);
for (ContentItem pub : publicationsToShow) {
generatePublicationXML(pub, parent, state);
}
}
protected void generatePublicationXML(final ContentItem publication,
final Element parent,
final PageState state) {
Element publicationElem;
ContentItemXMLRenderer renderer;
if (publication == null) {
return;
}
publicationElem = parent.newChildElement("publications");
renderer = new ContentItemXMLRenderer(publicationElem);
renderer.setWrapAttributes(true);
renderer.walk(publication, SimpleXMLGenerator.class.getName());
}*/
}

View File

@ -1,132 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Form for linking {@link SciOrganization}s with {@link SciDepartment}s.
*
* @author Jens Pelzetter
* @see SciOrganization
* @see SciDepartment
*/
public class SciOrganizationDepartmentAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private ItemSearchWidget m_itemSearch;
private final String ITEM_SEARCH = "departments";
public SciOrganizationDepartmentAddForm(ItemSelectionModel itemModel) {
super("DepartmentsAddForm", itemModel);
}
@Override
protected void addWidgets() {
add(new Label((String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.select_department").localize()));
m_itemSearch = new ItemSearchWidget(
ITEM_SEARCH,
ContentType.findByAssociatedObjectType(
SciDepartment.class.getName()));
add(m_itemSearch);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciOrganization orga = (SciOrganization) getItemSelectionModel().
getSelectedObject(state);
if (!(this.getSaveCancelSection().getCancelButton().
isSelected(state))) {
SciDepartment department = (SciDepartment) data.get(ITEM_SEARCH);
department = (SciDepartment) department.getContentBundle().
getInstance(orga.getLanguage());
orga.addDepartment(department);
//orga.addDepartment((SciDepartment) data.get(ITEM_SEARCH));
}
init(fse);
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.add.no_department_selected"));
return;
}
SciOrganization orga = (SciOrganization) getItemSelectionModel().
getSelectedObject(state);
SciDepartment department = (SciDepartment) data.get(ITEM_SEARCH);
if (!(department.getContentBundle().hasInstance(orga.getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.add.no_suitable_language_variant"));
return;
}
department = (SciDepartment) department.getContentBundle().getInstance(orga.
getLanguage());
SciOrganizationDepartmentsCollection departments = orga.getDepartments();
departments.addFilter(String.format("id = %s",
department.getID().toString()));
if (departments.size() > 0) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.add.already_added"));
}
departments.close();
}
}

View File

@ -1,64 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Step for adding {@link SciDepartment}s to a {@link SciOrganization}.
*
* @author Jens Pelzetter
* @see SciDepartment
* @see SciOrganization
*/
public class SciOrganizationDepartmentsStep extends SimpleEditStep {
private String ADD_DEPARTMENT_SHEET_NAME = "addDepartment";
public SciOrganizationDepartmentsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciOrganizationDepartmentsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addDepartmentSheet =
new SciOrganizationDepartmentAddForm(itemModel);
add(ADD_DEPARTMENT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.add_department").localize(),
new WorkflowLockedComponentAccess(addDepartmentSheet, itemModel),
addDepartmentSheet.getSaveCancelSection().getCancelButton());
SciOrganizationDepartmentsTable departmentTable =
new SciOrganizationDepartmentsTable(
itemModel);
setDisplayComponent(departmentTable);
}
}

View File

@ -1,382 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.dispatcher.ObjectNotFoundException;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
/**
* Table for showing the {@link SciDepartment}s linked to a
* {@link SciOrganization}.
*
* @author Jens Pelzetter
* @see SciOrganization
* @see SciDepartment
*/
public class SciOrganizationDepartmentsTable
extends Table
implements TableActionListener {
private final Logger s_log = Logger.getLogger(
SciOrganizationDepartmentsTable.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private final String TABLE_COL_UP = "table_col_up";
private final String TABLE_COL_DOWN = "table_col_down";
private ItemSelectionModel m_itemModel;
public SciOrganizationDepartmentsTable(ItemSelectionModel itemModel) {
super();
m_itemModel = itemModel;
setEmptyView(
new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.departments.none")));
TableColumnModel colModel = getColumnModel();
colModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department").localize(),
TABLE_COL_EDIT));
colModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.remove").localize(),
TABLE_COL_DEL));
colModel.add(new TableColumn(
2,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.up").localize(),
TABLE_COL_UP));
colModel.add(new TableColumn(
3,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.down").localize(),
TABLE_COL_DOWN));
setModelBuilder(
new SciOrganizationDepartmentsTableModelBuilder(itemModel));
colModel.get(0).setCellRenderer(new EditCellRenderer());
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
colModel.get(2).setCellRenderer(new UpCellRenderer());
colModel.get(3).setCellRenderer(new DownCellRenderer());
addTableActionListener(this);
}
private class SciOrganizationDepartmentsTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
private ItemSelectionModel m_itemModel;
public SciOrganizationDepartmentsTableModelBuilder(
ItemSelectionModel itemModel) {
m_itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciOrganization orga = (SciOrganization) m_itemModel.
getSelectedObject(state);
return new SciOrganizationDepartmentsTableModel(table,
state,
orga);
}
}
private class SciOrganizationDepartmentsTableModel
implements TableModel {
private Table m_table;
private SciOrganizationDepartmentsCollection m_departments;
private SciDepartment m_department;
private SciOrganizationDepartmentsTableModel(Table table,
PageState state,
SciOrganization orga) {
m_table = table;
m_departments = orga.getDepartments();
}
@Override
public int getColumnCount() {
return m_table.getColumnModel().size();
}
@Override
public boolean nextRow() {
boolean ret;
if ((m_departments != null) && m_departments.next()) {
m_department = m_departments.getDepartment();
ret = true;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return m_department.getTitle();
case 1:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.remove").
localize();
case 2:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.up").
localize();
case 3:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.down").
localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return m_department.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciOrganization orga = (SciOrganization) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.EDIT_ITEM,
orga);
if (canEdit) {
SciDepartment department;
try {
department = new SciDepartment((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
s_log.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link = new Link(String.format("%s (%s)",
value.toString(),
department.getLanguage()),
resolver.generateItemURL(state,
department,
section,
department.
getVersion()));
return link;
} else {
SciDepartment department;
try {
department = new SciDepartment((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
s_log.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
Label label = new Label(String.format("%s (%s)",
value.toString(),
department.getLanguage()));
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciOrganization orga = (SciOrganization) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.DELETE_ITEM,
orga);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"sciorganization.ui.organization.department."
+ "confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
private class UpCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(
Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
if (0 == row) {
Label label = new Label("");
return label;
} else {
ControlLink link = new ControlLink(
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.up").
localize());
return link;
}
}
}
private class DownCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(
Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SciOrganization orga = (SciOrganization) m_itemModel.
getSelectedObject(state);
SciOrganizationDepartmentsCollection departments = orga.
getDepartments();
if ((departments.size() - 1) == row) {
Label label = new Label("");
return label;
} else {
ControlLink link = new ControlLink(
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.department.down").
localize());
return link;
}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciDepartment department = new SciDepartment(
new BigDecimal(event.getRowKey().toString()));
SciOrganization orga =
(SciOrganization) m_itemModel.getSelectedObject(state);
SciOrganizationDepartmentsCollection departments =
orga.getDepartments();
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
orga.removeDepartment(department);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_UP)) {
departments.swapWithPrevious(department);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DOWN)) {
departments.swapWithNext(department);
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do.
}
}

View File

@ -1,102 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.form.TextArea;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.ui.CMSDHTMLEditor;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Form for editing the description of a {@link SciOrganization}.
*
* @author Jens Pelzetter
* @see SciOrganization
*/
public class SciOrganizationDescriptionEditForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
public SciOrganizationDescriptionEditForm(ItemSelectionModel itemModel) {
super("sciorganizationEditDescForm", itemModel);
}
@Override
public void addWidgets() {
add(new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.description")));
ParameterModel descParam = new StringParameter(
SciOrganization.ORGANIZATION_DESCRIPTION);
TextArea desc;
if (SciOrganization.getConfig().getOrganizationDescriptionDhtml()) {
desc = new CMSDHTMLEditor(descParam);
} else {
desc = new TextArea(descParam);
}
desc.setCols(75);
desc.setRows(25);
add(desc);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
FormData data = fse.getFormData();
SciOrganization orga = (SciOrganization) getItemSelectionModel().
getSelectedObject(state);
data.put(SciOrganization.ORGANIZATION_DESCRIPTION,
orga.getOrganizationDescription());
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
FormData data = fse.getFormData();
SciOrganization orga = (SciOrganization) getItemSelectionModel().
getSelectedObject(state);
if ((orga != null) && this.getSaveCancelSection().getSaveButton().
isSelected(state)) {
orga.setOrganizationDescription((String) data.get(
SciOrganization.ORGANIZATION_DESCRIPTION));
orga.save();
init(fse);
}
}
}

View File

@ -1,83 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
/**
* Step for editing the description of a {@link SciOrganization}.
*
* @author Jens Pelzetter
* @see SciOrganization
*/
public class SciOrganizationDescriptionStep extends SimpleEditStep {
private String EDIT_ORGANIZATION_DESC_SHEET_NAME = "editOrganizationDesc";
private String UPLOAD_ORGANIZATION_DESC_SHEET_NAME =
"uploadOrganizationDesc";
public SciOrganizationDescriptionStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciOrganizationDescriptionStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm editDescForm =
new SciOrganizationDescriptionEditForm(itemModel);
add(EDIT_ORGANIZATION_DESC_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.edit_desc").localize(),
new WorkflowLockedComponentAccess(editDescForm, itemModel),
editDescForm.getSaveCancelSection().getCancelButton());
SciOrganizationDescriptionUploadForm uploadDescForm =
new SciOrganizationDescriptionUploadForm(itemModel);
add(UPLOAD_ORGANIZATION_DESC_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.upload_desc").localize(),
new WorkflowLockedComponentAccess(uploadDescForm, itemModel),
uploadDescForm.getSaveCancelSection().getCancelButton());
setDisplayComponent(getSciOrganizationEditDescSheet(itemModel));
}
public static Component getSciOrganizationEditDescSheet(
ItemSelectionModel itemModel) {
DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(
itemModel);
sheet.add(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.desc"),
SciOrganization.ORGANIZATION_DESCRIPTION);
return sheet;
}
}

View File

@ -1,62 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.globalization.GlobalizedMessage;
/**
* Form for uploading the description of a {@link SciOrganization}.
*
* @author Jens Pelzetter
* @see SciOrganization
* @see AbstractTextUploadForm
*/
public class SciOrganizationDescriptionUploadForm
extends AbstractTextUploadForm {
public SciOrganizationDescriptionUploadForm(ItemSelectionModel itemModel) {
super(itemModel);
}
@Override
public GlobalizedMessage getLabelText() {
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.description.upload");
}
@Override
public GlobalizedMessage getMimeTypeLabel() {
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.description.upload.mimetype");
}
@Override
public void setText(ItemSelectionModel itemModel,
PageState state,
String text) {
SciOrganization orga = (SciOrganization) itemModel.getSelectedObject(
state);
orga.setOrganizationDescription(text);
orga.save();
}
}

View File

@ -1,41 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.globalization.GlobalizedMessage;
/**
* GlobalizationUtil for the ccm-sci-types-organization module.
*
* @author Jens Pelzetter
*/
public class SciOrganizationGlobalizationUtil {
public static final String BUNDLE_NAME = "com.arsdigita.cms.contenttypes.ui.SciOrganizationResources";
public static GlobalizedMessage globalize(String key) {
return new GlobalizedMessage(key, BUNDLE_NAME);
}
public static GlobalizedMessage globalize(String key, Object[] args) {
return new GlobalizedMessage(key, BUNDLE_NAME, args);
}
}

View File

@ -1,58 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.contenttypes.SciOrganization;
/**
* Form for linking members with a {@link SciOrganization}. The form overwrites
* the {@link GenericOrganizationalUnitPersonAddForm#getPersonType()} to limit
* the selectable person type to {@link SciMember}.
*
* @author Jens Pelzetter
* @see SciOrganization
* @see SciMember
* @see GenericPerson
* @see GenericOrganizationalUnitPersonAddForm
*/
public class SciOrganizationMemberAddForm
extends GenericOrganizationalUnitPersonAddForm {
public SciOrganizationMemberAddForm(
ItemSelectionModel itemModel,
GenericOrganizationalUnitPersonSelector personSelector) {
super(itemModel, personSelector);
}
@Override
protected String getPersonType() {
return GenericPerson.class.getName();
}
@Override
protected String getRoleAttributeName() {
return "SciOrganizationRole";
}
}

View File

@ -1,99 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciMember;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Step for adding and removing member form a {@link SciOrganization}.
*
* @author Jens Pelzetter
* @see SciOrganizationMemberAddForm
* @see SciMember
* @see SciOrganization
*/
public class SciOrganizationMemberStep
extends SimpleEditStep
implements GenericOrganizationalUnitPersonSelector {
public static final String ADD_MEMBER_SHEET_NAME = "addMember";
private GenericPerson selectedPerson;
private String selectedPersonRole;
private String selectedPersonStatus;
public SciOrganizationMemberStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciOrganizationMemberStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addMemberSheet =
new SciOrganizationMemberAddForm(itemModel, this);
add(ADD_MEMBER_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.orgnization.add_member").localize(),
new WorkflowLockedComponentAccess(addMemberSheet, itemModel),
addMemberSheet.getSaveCancelSection().getCancelButton());
SciOrganizationMemberTable memberTable = new SciOrganizationMemberTable(
itemModel, this);
setDisplayComponent(memberTable);
}
public GenericPerson getSelectedPerson() {
return selectedPerson;
}
public void setSelectedPerson(final GenericPerson selectedPerson) {
this.selectedPerson = selectedPerson;
}
public String getSelectedPersonRole() {
return selectedPersonRole;
}
public void setSelectedPersonRole(final String selectedPersonRole) {
this.selectedPersonRole = selectedPersonRole;
}
public String getSelectedPersonStatus() {
return selectedPersonStatus;
}
public void setSelectedPersonStatus(final String selectedPersonStatus) {
this.selectedPersonStatus = selectedPersonStatus;
}
public void showEditComponent(final PageState state) {
showComponent(state, ADD_MEMBER_SHEET_NAME);
}
}

View File

@ -1,40 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
/**
*
* @author Jens Pelzetter
*/
public class SciOrganizationMemberTable extends GenericOrganizationalUnitPersonsTable {
public SciOrganizationMemberTable(ItemSelectionModel itemModel,
GenericOrganizationalUnitPersonSelector personSelector) {
super(itemModel, personSelector);
}
@Override
protected String getRoleAttributeName() {
return "SciOrganizationRole";
}
}

View File

@ -1,594 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection;
import com.arsdigita.cms.contenttypes.SciOrganizationProjectsCollection;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.contenttypes.ui.panels.Filter;
import com.arsdigita.cms.contenttypes.ui.panels.TextFilter;
import com.arsdigita.xml.Element;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
/**
* Panel for rendering the properties of a SciOrganization. The property to show
* is selected via the <code>show</code> parameter.
*
* @author Jens Pelzetter
*/
public class SciOrganizationPanel extends SciOrganizationBasePanel {
private static final Logger s_log = Logger.getLogger(
SciOrganizationPanel.class);
public static final String SHOW_DESCRIPTION = "description";
public static final String SHOW_MEMBERS_ACTIVE = "membersActive";
public static final String SHOW_MEMBERS_ASSOCIATED = "membersAssociated";
public static final String SHOW_MEMBERS_FORMER = "membersFormer";
public static final String SHOW_DEPARTMENTS = "departments";
public static final String SHOW_PROJECTS = "projects";
public static final String SHOW_PROJECTS_ONGOING = "projectsOngoing";
public static final String SHOW_PROJECTS_FINISHED = "projectsFinished";
private static final String TTILE = "title";
private String show;
private boolean displayDescription = true;
private boolean displayDepartments = true;
private boolean displayProjects = true;
private final Map<String, Filter> projectFilters =
new LinkedHashMap<String, Filter>();
public SciOrganizationPanel() {
projectFilters.put(TTILE, new TextFilter(TTILE, TTILE));
}
@Override
protected String getDefaultShowParam() {
return SHOW_DESCRIPTION;
}
@Override
protected Class<? extends ContentItem> getAllowedClass() {
return SciOrganization.class;
}
public boolean isDisplayDepartments() {
return displayDepartments;
}
public void setDisplayDepartments(boolean displayDepartments) {
this.displayDepartments = displayDepartments;
}
public boolean isDisplayDescription() {
return displayDescription;
}
public void setDisplayDescription(boolean displayDescription) {
this.displayDescription = displayDescription;
}
public boolean isDisplayProjects() {
return displayProjects;
}
public void setDisplayProjects(boolean displayProjects) {
this.displayProjects = displayProjects;
}
protected boolean hasMembers(final SciOrganization orga) {
return orga.hasMembers(true, SciOrganization.MemberStatus.ALL);
}
protected boolean hasActiveMembers(final SciOrganization orga) {
return orga.hasMembers(true, SciOrganization.MemberStatus.ACTIVE);
}
protected boolean hasAssociatedMembers(final SciOrganization orga) {
return orga.hasMembers(true, SciOrganization.MemberStatus.ASSOCIATED);
}
protected boolean hasFormerMembers(final SciOrganization orga) {
return orga.hasMembers(true, SciOrganization.MemberStatus.FORMER);
}
protected boolean hasProjects(final SciOrganization orga) {
return orga.hasProjects(SciOrganization.getConfig().
getOrganizationProjectsMerge(),
SciOrganization.ProjectStatus.ALL);
}
protected boolean hasOngoingProjects(final SciOrganization orga) {
return orga.hasProjects(SciOrganization.getConfig().
getOrganizationProjectsMerge(),
SciOrganization.ProjectStatus.ONGOING);
}
protected boolean hasFinishedProjects(final SciOrganization orga) {
return orga.hasProjects(SciOrganization.getConfig().
getOrganizationProjectsMerge(),
SciOrganization.ProjectStatus.FINISHED);
}
protected void generateDepartmentsXML(final SciOrganization orga,
final Element parent,
final PageState state) {
SciOrganizationDepartmentsCollection departments;
departments = orga.getDepartments();
departments.addOrder("link.departmentOrder asc");
long pageNumber = getPageNumber(state);
Element departmentsElem = parent.newChildElement("departments");
long pageCount = getPageCount(departments.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, departments.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
createPaginatorElement(
parent, pageNumber, pageCount, begin, end, count, departments.
size());
departments.setRange((int) begin + 1, (int) end + 1);
while (departments.next()) {
SciDepartment department;
department = departments.getDepartment();
Element departmentElem = departmentsElem.newChildElement(
"department");
departmentElem.addAttribute("order", Integer.toString(departments.
getDepartmentOrder()));
departmentElem.addAttribute("oid", department.getOID().toString());
Element title = departmentElem.newChildElement("title");
title.setText(department.getTitle());
if ((department.getAddendum() != null)
&& !(department.getAddendum().isEmpty())) {
Element addendum = departmentElem.newChildElement("addendum");
addendum.setText(department.getAddendum());
}
if ((department.getDepartmentShortDescription() != null)
&& !(department.getDepartmentShortDescription().isEmpty())) {
Element shortDesc = departmentElem.newChildElement(
"shortDescription");
shortDesc.setText(department.getDepartmentShortDescription());
}
GenericOrganizationalUnitPersonCollection heads;
heads = department.getPersons();
heads.addFilter("link.role_name = 'head' and link.status = 'active'");
heads.addOrder("surname asc, givenname asc");
if (heads.size() > 0) {
Element headsElem = departmentElem.newChildElement("heads");
while (heads.next()) {
Element headElem = headsElem.newChildElement("head");
Element titlePre = headElem.newChildElement("titlePre");
titlePre.setText(heads.getTitlePre());
Element givenName = headElem.newChildElement("givenname");
givenName.setText(heads.getGivenName());
Element surname = headElem.newChildElement("surname");
surname.setText(heads.getSurname());
Element titlePost = headElem.newChildElement("titlePost");
titlePost.setText(heads.getTitlePost());
}
}
GenericOrganizationalUnitContactCollection contacts;
contacts = department.getContacts();
if (contacts.size() > 0) {
Element contactsElem =
departmentElem.newChildElement("contacts");
while (contacts.next()) {
generateContactXML(contacts.getContactType(),
contacts.getPerson(),
contacts.getContactEntries(),
contacts.getAddress(),
contactsElem,
state,
Integer.toString(
contacts.getContactOrder()),
true);
}
}
}
}
protected void mergeMembers(
final SciOrganizationDepartmentsCollection departments,
final List<MemberListItem> members,
final List<String> filters) {
while (departments.next()) {
SciDepartment department = departments.getDepartment();
GenericOrganizationalUnitPersonCollection departmentsMembers;
departmentsMembers = department.getPersons();
for (String filter : filters) {
departmentsMembers.addFilter(filter);
}
while (departmentsMembers.next()) {
addMember(departmentsMembers,
members);
}
SciDepartmentSubDepartmentsCollection subDepartments;
subDepartments = department.getSubDepartments();
if ((subDepartments != null)
&& subDepartments.size() > 0) {
mergeMembers(subDepartments, members, filters);
}
}
}
protected void generateMembersXML(final SciOrganization orga,
final Element parent,
final PageState state,
final List<String> filters) {
if (SciOrganization.getConfig().getOrganizationMembersMerge()) {
long begin = System.currentTimeMillis();
List<MemberListItem> members;
members = new LinkedList<MemberListItem>();
GenericOrganizationalUnitPersonCollection orgaMembers;
orgaMembers = orga.getPersons();
for (String filter : filters) {
orgaMembers.addFilter(filter);
}
SciOrganizationDepartmentsCollection departments;
departments = orga.getDepartments();
while (orgaMembers.next()) {
addMember(orgaMembers,
members);
}
mergeMembers(departments, members, filters);
generateMembersListXML(members, parent, state);
System.out.printf("Members XML generated in %d ms\n", System.currentTimeMillis() - begin);
} else {
GenericOrganizationalUnitPersonCollection orgaMembers;
orgaMembers = orga.getPersons();
for (String filter : filters) {
orgaMembers.addFilter(filter);
}
List<MemberListItem> members = new LinkedList<MemberListItem>();
while (orgaMembers.next()) {
addMember(orgaMembers,
members);
}
generateMembersListXML(members, parent, state);
}
}
protected void mergeProjects(
final SciOrganizationDepartmentsCollection departments,
final List<SciProject> projects,
final List<String> filters,
final PageState state) {
while (departments.next()) {
SciDepartmentProjectsCollection departmentProjects;
departmentProjects = departments.getDepartment().getProjects();
if ((filters != null)
&& !(filters.isEmpty())) {
for (String filter : filters) {
departmentProjects.addFilter(filter);
}
}
while (departmentProjects.next()) {
projects.add(departmentProjects.getProject());
}
SciDepartmentSubDepartmentsCollection subDepartments;
subDepartments = departments.getDepartment().getSubDepartments();
if ((subDepartments != null)
&& subDepartments.size() > 0) {
mergeProjects(subDepartments, projects, filters);
}
}
}
protected void generateProjectsXML(final SciOrganization orga,
final Element parent,
final PageState state,
final List<String> filters) {
Element controls = parent.newChildElement("filterControls");
controls.addAttribute("customName", "sciOrganizationProjects");
controls.addAttribute("show", show);
if (SciOrganization.getConfig().getOrganizationProjectsMerge()) {
List<SciProject> projects;
projects = new LinkedList<SciProject>();
SciOrganizationProjectsCollection orgaProjects;
orgaProjects = orga.getProjects();
applyProjectFilters(filters, state.getRequest());
if ((filters != null)
&& !(filters.isEmpty())) {
for (String filter : filters) {
orgaProjects.addFilter(filter);
}
}
SciOrganizationDepartmentsCollection departments;
departments = orga.getDepartments();
while (orgaProjects.next()) {
projects.add(orgaProjects.getProject());
}
mergeProjects(departments, projects, filters, state);
Set<SciProject> projectsSet;
List<SciProject> projectsWithoutDoubles;
projectsSet = new HashSet<SciProject>(projects);
projectsWithoutDoubles = new LinkedList<SciProject>(projectsSet);
Collections.sort(projectsWithoutDoubles, new SciProjectComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(projectsWithoutDoubles.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, projectsWithoutDoubles.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
generateProjectFiltersXml(projectsWithoutDoubles, controls);
createPaginatorElement(
parent, pageNumber, pageCount, begin, end, count,
projectsWithoutDoubles.size());
List<SciProject> projectsWithoutDoublesToShow =
projectsWithoutDoubles.subList((int) begin,
(int) end);
Element projectsWithoutDoublesElem = parent.newChildElement(
"projects");
for (SciProject project : projectsWithoutDoublesToShow) {
generateProjectXML(project, projectsWithoutDoublesElem, state);
}
} else {
SciOrganizationProjectsCollection orgaProjects;
orgaProjects = orga.getProjects();
applyProjectFilters(filters, state.getRequest());
if ((filters != null)
&& !(filters.isEmpty())) {
for (String filter : filters) {
orgaProjects.addFilter(filter);
}
}
List<SciProject> projects = new LinkedList<SciProject>();
while (orgaProjects.next()) {
projects.add(orgaProjects.getProject());
}
Collections.sort(projects, new SciProjectComparator());
long pageNumber = getPageNumber(state);
long pageCount = getPageCount(projects.size());
long begin = getPaginatorBegin(pageNumber);
long count = getPaginatorCount(begin, projects.size());
long end = getPaginatorEnd(begin, count);
pageNumber = normalizePageNumber(pageCount, pageNumber);
generateProjectFiltersXml(projects, controls);
createPaginatorElement(
parent, pageNumber, pageCount, begin, end, count, projects.
size());
List<SciProject> projectsToShow = projects.subList((int) begin,
(int) end);
Element projectsElem = parent.newChildElement("projects");
for (SciProject project : projectsToShow) {
generateProjectXML(project, projectsElem, state);
}
}
}
protected void generateProjectFiltersXml(
final List<SciProject> projects,
final Element element) {
final Element filterElement = element.newChildElement("filters");
for (Map.Entry<String, Filter> filterEntry : projectFilters.entrySet()) {
filterEntry.getValue().generateXml(filterElement);
}
}
protected void applyProjectFilters(
final List<String> filters,
final HttpServletRequest request) {
//Get parameters from HTTP request
for (Map.Entry<String, Filter> filterEntry : projectFilters.entrySet()) {
String value = request.getParameter(
filterEntry.getValue().getLabel());
if ((value != null) && !(value.trim().isEmpty())) {
filterEntry.getValue().setValue(value);
}
}
//Apply filters to DomainCollection
final StringBuilder filterBuilder = new StringBuilder();
for (Map.Entry<String, Filter> filterEntry : projectFilters.entrySet()) {
if ((filterEntry.getValue().getFilter() == null)
|| (filterEntry.getValue().getFilter().isEmpty())) {
continue;
}
if (filterBuilder.length() > 0) {
filterBuilder.append(" AND ");
}
filterBuilder.append(filterEntry.getValue().getFilter());
s_log.debug(String.format("filters: %s", filterBuilder));
if (filterBuilder.length() > 0) {
filters.add(filterBuilder.toString());
}
}
}
@Override
protected void generateAvailableDataXml(final GenericOrganizationalUnit orga,
final Element element,
final PageState state) {
SciOrganizationConfig config;
config = SciOrganization.getConfig();
SciOrganization organization = (SciOrganization) orga;
if ((organization.getOrganizationDescription() != null)
&& !(organization.getOrganizationDescription().isEmpty())
&& displayDescription) {
element.newChildElement("description");
}
if (organization.hasContacts()
&& isDisplayContacts()) {
element.newChildElement("contacts");
}
if (organization.hasDepartments()
&& displayDepartments) {
element.newChildElement("departments");
}
if (config.getOrganizationMembersAllInOne()) {
if (hasMembers(organization)
&& isDisplayMembers()) {
element.newChildElement("members");
}
} else {
if (hasActiveMembers(organization)
&& isDisplayMembers()) {
element.newChildElement("membersActive");
}
if (hasAssociatedMembers(organization)
&& isDisplayMembers()) {
element.newChildElement("membersAssociated");
}
if (hasFormerMembers(organization)
&& isDisplayMembers()) {
element.newChildElement("membersFormer");
}
}
if (config.getOrganizationProjectsAllInOne()) {
if (hasProjects(organization)
&& displayProjects) {
element.newChildElement("projects");
}
} else {
if (hasOngoingProjects(organization)
&& displayProjects) {
element.newChildElement("projectsOngoing");
}
if (hasFinishedProjects(organization)
&& displayProjects) {
element.newChildElement("projectsFinished");
}
}
}
@Override
protected void generateDataXml(final GenericOrganizationalUnit orga,
final Element element,
final PageState state) {
show = getShowParam(state);
SciOrganization organization = (SciOrganization) orga;
if (SHOW_DESCRIPTION.equals(show)) {
String desc;
desc = organization.getOrganizationDescription();
Element description = element.newChildElement("description");
description.setText(desc);
} else if (SHOW_CONTACTS.equals(show)) {
generateContactsXML(organization, element, state);
} else if (SHOW_DEPARTMENTS.equals(show)) {
generateDepartmentsXML(organization, element, state);
} else if (SHOW_MEMBERS.equals(show)) {
generateMembersXML(organization, element, state,
new LinkedList<String>());
} else if (SHOW_MEMBERS_ACTIVE.equals(show)) {
generateMembersXML(organization, element, state,
getFiltersForActiveMembers());
} else if (SHOW_MEMBERS_ASSOCIATED.equals(show)) {
generateMembersXML(organization, element, state,
getFiltersForAssociatedMembers());
} else if (SHOW_MEMBERS_FORMER.equals(show)) {
generateMembersXML(organization, element, state,
getFiltersForFormerMembers());
} else if (SHOW_PROJECTS.equals(show)) {
generateProjectsXML(organization, element, state,
new LinkedList<String>());
} else if (SHOW_PROJECTS_ONGOING.equals(show)) {
generateProjectsXML(
organization, element, state, getFiltersForOngoingProjects());
} else if (SHOW_PROJECTS_FINISHED.equals(show)) {
generateProjectsXML(
organization, element, state,
getFiltersForFinishedProjects());
}
}
/*@Override
public void generateXML(ContentItem item,
Element element,
PageState state) {
Element content = generateBaseXML(item, element, state);
SciOrganization orga = (SciOrganization) item;
Element availableData = content.newChildElement("availableData");
generateAvailableDataXml(orga, availableData, state);
generateDataXml(orga, content, state);
}*/
}

View File

@ -1,128 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationProjectsCollection;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Form for linking projects with a {@link SciOrganization}.
*
* @author Jens Pelzetter
* @see SciOrganizationProjectAddForm
* @see SciOrganization
* @see SciProject
*/
public class SciOrganizationProjectAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private ItemSearchWidget m_itemSearch;
private final String ITEM_SEARCH = "projects";
public SciOrganizationProjectAddForm(ItemSelectionModel itemModel) {
super("ProjectsAddForm", itemModel);
}
@Override
protected void addWidgets() {
add(new Label((String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.select_project").localize()));
m_itemSearch = new ItemSearchWidget(
ITEM_SEARCH,
ContentType.findByAssociatedObjectType(
SciProject.class.getName()));
add(m_itemSearch);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciOrganization orga = (SciOrganization) getItemSelectionModel().
getSelectedObject(state);
if (!(this.getSaveCancelSection().getCancelButton().
isSelected(state))) {
SciProject project = (SciProject) data.get(ITEM_SEARCH);
project = (SciProject) project.getContentBundle().getInstance(orga.
getLanguage());
orga.addProject(project);
}
init(fse);
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.select_project.no_project_selected"));
return;
}
SciOrganization orga = (SciOrganization) getItemSelectionModel().
getSelectedObject(state);
SciProject project = (SciProject) data.get(ITEM_SEARCH);
if (!(project.getContentBundle().hasInstance(orga.getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.select_project.no_suitable_language_variant"));
return;
}
project = (SciProject) project.getContentBundle().getInstance(orga.
getLanguage());
SciOrganizationProjectsCollection projects = orga.getProjects();
projects.addFilter(String.format("id = %s", project.getID().toString()));
if (projects.size() > 0) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.select_project.already_added"));
}
projects.close();
}
}

View File

@ -1,66 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Step for adding and removing links from a {@link SciOrganization} to a
* {@link SciProject}.
*
* @author Jens Pelzetter
* @see SciOrganizationProjectAddForm
* @see SciOrganization
* @see SciProject
*/
public class SciOrganizationProjectsStep extends SimpleEditStep {
private String ADD_PROJECT_SHEET_NAME = "addProject";
public SciOrganizationProjectsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciOrganizationProjectsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addProjectSheet =
new SciOrganizationProjectAddForm(itemModel);
add(ADD_PROJECT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.add_project").localize(),
new WorkflowLockedComponentAccess(addProjectSheet, itemModel),
addProjectSheet.getSaveCancelSection().getCancelButton());
SciOrganizationProjectsTable projectsTable =
new SciOrganizationProjectsTable(
itemModel);
setDisplayComponent(projectsTable);
}
}

View File

@ -1,382 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import java.math.BigDecimal;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationProjectsCollection;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.dispatcher.ObjectNotFoundException;
import com.arsdigita.util.LockableImpl;
import org.apache.log4j.Logger;
/**
* Table for showing the links between a {@link SciOrganization} and
* {@link SciProject}s.
*
* @author Jens Pelzetter
* @see SciOrganization
* @see SciProject
*/
public class SciOrganizationProjectsTable
extends Table
implements TableActionListener {
private final Logger s_log = Logger.getLogger(
SciOrganizationProjectsTable.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private final String TABLE_COL_UP = "table_col_up";
private final String TABLE_COL_DOWN = "table_col_down";
private ItemSelectionModel m_itemModel;
public SciOrganizationProjectsTable(ItemSelectionModel itemModel) {
super();
m_itemModel = itemModel;
setEmptyView(
new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.projects.none")));
TableColumnModel colModel = getColumnModel();
colModel.add(new TableColumn(
0,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project").localize(),
TABLE_COL_EDIT));
colModel.add(new TableColumn(
1,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project.remove").localize(),
TABLE_COL_DEL));
/*colModel.add(new TableColumn(
2,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project.up").localize(),
TABLE_COL_UP));
colModel.add(new TableColumn(
3,
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project.down").localize(),
TABLE_COL_DOWN));*/
setModelBuilder(
new SciOrganizationProjectsTableModelBuilder(itemModel));
colModel.get(0).setCellRenderer(new EditCellRenderer());
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
//colModel.get(2).setCellRenderer(new UpCellRenderer());
//colModel.get(3).setCellRenderer(new DownCellRenderer());
addTableActionListener(this);
}
private class SciOrganizationProjectsTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
private ItemSelectionModel m_itemModel;
public SciOrganizationProjectsTableModelBuilder(
ItemSelectionModel itemModel) {
m_itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
SciOrganization orga = (SciOrganization) m_itemModel.
getSelectedObject(state);
return new SciOrganizationProjectsTableModel(table,
state,
orga);
}
}
private class SciOrganizationProjectsTableModel
implements TableModel {
private Table m_table;
private SciOrganizationProjectsCollection m_projects;
private SciProject m_project;
public SciOrganizationProjectsTableModel(Table table,
PageState state,
SciOrganization orga) {
m_table = table;
m_projects = orga.getProjects();
}
@Override
public int getColumnCount() {
return m_table.getColumnModel().size();
}
@Override
public boolean nextRow() {
boolean ret;
if ((m_projects != null) && m_projects.next()) {
m_project = m_projects.getProject();
ret = true;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return m_project.getTitle();
case 1:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project.remove").
localize();
case 2:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project.up").
localize();
case 3:
return SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project.down").
localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return m_project.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciOrganization orga = (SciOrganization) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.EDIT_ITEM,
orga);
if (canEdit) {
SciProject project;
try {
project = new SciProject((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
s_log.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
ContentSection section = CMS.getContext().getContentSection();
ItemResolver resolver = section.getItemResolver();
Link link =
new Link(String.format("%s (%s)",
value.toString(),
project.getLanguage()),
resolver.generateItemURL(state,
project,
section,
project.getVersion()));
return link;
} else {
SciProject project;
try {
project = new SciProject((BigDecimal) key);
} catch (ObjectNotFoundException ex) {
s_log.warn(String.format("No object with key '%s' found.",
key),
ex);
return new Label(value.toString());
}
Label label = new Label(String.format("%s (%s)",
value.toString(),
project.getLanguage()));
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SecurityManager securityManager =
Utilities.getSecurityManager(state);
SciOrganization orga = (SciOrganization) m_itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
SecurityManager.DELETE_ITEM,
orga);
if (canEdit) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) SciOrganizationGlobalizationUtil.
globalize(
"sciorganization.ui.organization.project."
+ "confirm_remove").
localize());
return link;
} else {
Label label = new Label(value.toString());
return label;
}
}
}
private class UpCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(
Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
if (0 == row) {
Label label = new Label("");
return label;
} else {
ControlLink link = new ControlLink(
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project.up").
localize());
return link;
}
}
}
private class DownCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(
Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
SciOrganization orga = (SciOrganization) m_itemModel.
getSelectedObject(state);
SciOrganizationProjectsCollection projects = orga.getProjects();
if ((projects.size() - 1) == row) {
Label label = new Label("");
return label;
} else {
ControlLink link = new ControlLink(
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.project.down").
localize());
return link;
}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
SciProject project = new SciProject(
new BigDecimal(event.getRowKey().toString()));
SciOrganization orga =
(SciOrganization) m_itemModel.getSelectedObject(state);
SciOrganizationProjectsCollection projects =
orga.getProjects();
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
orga.removeProject(project);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_UP)) {
projects.swapWithPrevious(project);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DOWN)) {
projects.swapWithNext(project);
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do.
}
}

View File

@ -1,121 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Label;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
/**
* Step for editing the basic properties of a {@link SciOrganization}.
*
* @author Jens Pelzetter
*/
public class SciOrganizationPropertiesStep
extends GenericOrganizationalUnitPropertiesStep {
public SciOrganizationPropertiesStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
super(itemModel, parent);
}
@Override
protected void addBasicProperties(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
SimpleEditStep basicProperties = new SimpleEditStep(itemModel,
parent,
EDIT_SHEET_NAME);
BasicPageForm editBasicSheet =
new SciOrganizationPropertyForm(itemModel, this);
basicProperties.add(EDIT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.edit_basic_sheet").localize(),
new WorkflowLockedComponentAccess(editBasicSheet,
itemModel),
editBasicSheet.getSaveCancelSection().
getCancelButton());
basicProperties.setDisplayComponent(
getSciOrganizationPropertySheet(itemModel));
getSegmentedPanel().addSegment(
new Label((String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.basic_properties").
localize()),
basicProperties);
}
@Override
protected void addSteps(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
//super.addSteps(itemModel, parent);
SciOrganizationConfig config;
config = SciOrganization.getConfig();
if (!config.getOrganizationAddContactHide()) {
addStep(new GenericOrganizationalUnitContactPropertiesStep(itemModel,
parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.contacts"));
}
/* This steps are now separate steps in the left box.
if (!config.getOrganizationAddPersonHide()) {
addStep(new SciOrganizationMemberStep(itemModel,
parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization_members"));
}
if (!config.getOrganizationAddDepartmentHide()) {
addStep(new SciOrganizationDepartmentsStep(itemModel, parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.departments"));
}
if (!config.getOrganizationAddProjectHide()) {
addStep(new SciOrganizationProjectsStep(itemModel, parent),
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.organization.projects"));
}*/
}
public static Component getSciOrganizationPropertySheet(
ItemSelectionModel itemModel) {
DomainObjectPropertySheet sheet = (DomainObjectPropertySheet) GenericOrganizationalUnitPropertiesStep.
getGenericOrganizationalUnitPropertySheet(itemModel);
sheet.add(SciOrganizationGlobalizationUtil.globalize(
"sciorganizations.ui.organization.shortdescription"),
SciOrganization.ORGANIZATION_SHORT_DESCRIPTION);
return sheet;
}
}

View File

@ -1,109 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.form.TextArea;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciOrganization;
/**
* Form for editing the basic properties of a {@link SciOrganization}.
*
* @author Jens Pelzetter
*/
public class SciOrganizationPropertyForm
extends GenericOrganizationalUnitPropertyForm
implements FormProcessListener,
FormInitListener,
FormSubmissionListener {
public static final String ID = "SciOrganizationEdit";
public SciOrganizationPropertyForm(ItemSelectionModel itemModel) {
this(itemModel, null);
}
public SciOrganizationPropertyForm(ItemSelectionModel itemModel,
SciOrganizationPropertiesStep step) {
super(itemModel, step);
addSubmissionListener(this);
}
@Override
protected void addWidgets() {
super.addWidgets();
Label descLabel = new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganizations.ui.organization.shortdescription"));
add(descLabel);
ParameterModel descParam = new StringParameter(
SciOrganization.ORGANIZATION_SHORT_DESCRIPTION);
TextArea desc = new TextArea(descParam);
desc.addValidationListener(new StringInRangeValidationListener(0, 500));
desc.setCols(75);
desc.setRows(5);
add(desc);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
super.init(fse);
FormData data = fse.getFormData();
SciOrganization orga = (SciOrganization) super.initBasicWidgets(fse);
data.put(SciOrganization.ORGANIZATION_SHORT_DESCRIPTION,
orga.getOrganizationShortDescription());
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
super.process(fse);
FormData data = fse.getFormData();
SciOrganization organization = (SciOrganization) super.
processBasicWidgets(fse);
if ((organization != null) && getSaveCancelSection().getSaveButton().
isSelected(fse.getPageState())) {
organization.setOrganizationShortDescription((String) data.get(
SciOrganization.ORGANIZATION_SHORT_DESCRIPTION));
organization.save();
}
}
@Override
public String getTitleLabel() {
return (String) SciOrganizationGlobalizationUtil.globalize(
"sciorganizations.ui.organization.title").localize();
}
}

View File

@ -1,232 +0,0 @@
sciorganization.ui.project.subprojects.none=No subprojects found
sciorganization.ui.project.subproject=Subproject
sciorganization.ui.project.subproject.remove=Remove subproject
sciorganization.ui.project.subproject.up=Up
sciorganization.ui.project.subproject.down=Down
sciorganization.ui.project.subproject.confirm_remove=Are you sure to remove this department?
sciorganization.ui.project.select_subproject=Select project to add as subproject
sciorganization.ui.member.edit_basic_properties=Edit basic properties
sciorganization.ui.member.associatedMember=Associated member?
sciorganization.ui.member.formerMember=Former member?
sciorganization.ui.project.edit_desc=Edit description
sciorganization.ui.project.upload_desc=Upload description
sciorganization.ui.project.desc=Project description
sciorganization.ui.project.funding=Funding
sciorganization.ui.organization.add_department=Add department
sciorganization.ui.department.add_project=Add project
sciorganization.ui.organization.add_project=Add project
sciorganization.ui.department.edit_basic_properties=Edit basic properties
sciorganization.ui.department.basic_properties=Basic properties
sciorganization.ui.organization.edit_basic_sheet=Basic properties
sciorganization.ui.organization.basic_properties=Basic properties
sciorganization.ui.project.begin=Start of project
sciorganization.ui.project.end=End of project
sciorganization.ui.project.shortdesc=Short description
sciorganization.ui.project.edit_basic_sheet=Basic properties
sciorganization.ui.project.basic_properties=Basis properties
sciorganization.ui.department.add_subdepartment=Add subdepartment
sciorganization.ui.organization.departments.none=No departments found
sciorganization.ui.organization.department=Department
sciorganization.ui.organization.department.remove=Remove department
sciorganization.ui.organization.department.up=Up
sciorganization.ui.organization.department.down=Down
sciorganization.ui.organization.department.confirm_remove=Are you sure to remove this department?
sciorganization.ui.department.projects.none=No projects found
sciorganization.ui.department.project=Project
sciorganization.ui.department.project.remove=Remove project
sciorganization.ui.department.project.up=Up
sciorganization.ui.department.project.down=Down
sciorganization.ui.department.project.confirm_remove=Are you sure to remove this project?
sciorganization.ui.organization.select_department=Select department to add
sciorganization.ui.organization.projects.none=No projects found
sciorganization.ui.organization.project=Project
sciorganization.ui.organization.project.remove=Remove project
sciorganization.ui.organization.project.up=Up
sciorganization.ui.organization.project.down=Down
sciorganization.ui.organization.project.confirm_remove=Are you sure to remove this project?
sciorganization.ui.project.addSubProject=Add subproject
sciorganization.ui.department.select_project=Select project to add
sciorganization.ui.organization.select_project=Select project to add
sciorganization.ui.department.subdepartments.none=No subdepartments found
sciorganization.ui.department.subdepartment=Subdepartment
sciorganization.ui.department.subdepartment.remove=Remove subdepartment
sciorganization.ui.department.subdepartment.up=Up
sciorganization.ui.department.subdepartment.down=Down
sciorganization.ui.department.subdepartment.confirm_remove=Are you sure to remove this subdepartment?
sciorganizations.ui.department.shortdescription=Short description
sciorganizations.ui.organization.shortdescription=Short description
sciorganization.ui.department.select_subdepartment=Select subdepartment to add
sciorganization.ui.department.add_member=Add member
sciorganizations.ui.project.shortdesc=Short description
sciorganization.ui.project.addDepartment=Add involved department
sciorganization.ui.project.addOrga=Add involved organization
sciorganization.ui.project.departments.none=No involved departments found
sciorganization.ui.project.department=Involved department
sciorganization.ui.project.department.remove=Remove involved department
sciorganization.ui.project.department.up=Up
sciorganization.ui.project.department.down=Down
sciorganization.ui.project.organization.confirm_remove=Are you sure to remove this involved organization?
sciorganization.ui.project.select_organization=Select organization to add
sciorganization.ui.project.organization.none=No involved organizations found
sciorganization.ui.project.organization=Involved organization
sciorganization.ui.project.organization.remove=Remove involved organization
sciorganization.ui.project.organization.up=Up
sciorganization.ui.project.organization.down=Down
sciorganization.ui.project.select_department=Select department to add
sciorganization.ui.project.superproject_none=No superior project found
sciorganization.ui.project.superproject=Superior project
sciorganization.ui.project.superproject.remove=Remove superior project
sciorganization.ui.project.superproject.confirm_remove=Are you sure to remove this superior project?
sciorganization.ui.department.select_superdepartment=Superior department
sciorganization.ui.project.setSuperProject=Set superior project
sciorganization.ui.project.description.upload=Upload project description
sciorganization.ui.project.description.upload.mimetype=Type of file
sciorganization.ui.organization.edit_desc=Edit description
sciorganization.ui.organization.upload_desc=Upload description
sciorganization.ui.organization.desc=Description
sciorganization.ui.organization.description=Description
sciorganization.ui.organization.description.upload=Upload description
sciorganization.ui.organization.description.upload.mimetype=Type of file
sciorganization.ui.project.select_superproject=Select superior project
sciorganization.ui.department.setSuperDepartment=Set superior department
sciorganization.ui.department.superdepartment_none=No superior department found
sciorganization.ui.department.superdepartment=Superior department
sciorganization.ui.department.superdepartment.remove=Remove superior department
sciorganization.ui.department.superdepartment.confirm_remove=Are you sure to remove the superior department?
sciorganization.ui.department.setOrganization=Set organization
sciorganization.ui.department.select_organization=Select organization
sciorganization.ui.department.organization_none=No assigned organization found
sciorganization.ui.department.organization=Organization
sciorganization.ui.department.organization.remove=Remove assigned organization
sciorganization.ui.department.organization.confirm_remove=Are you sure sure to remove to assigned organization?
sciorganization.ui.department.edit_desc=Edit description
sciorganization.ui.department.upload_desc=Upload description
sciorganization.ui.department.desc=Description
sciorganization.ui.department.description=Description
sciorganization.ui.department.description.upload=Upload description
sciorganization.ui.department.description.upload.mimetype=Type of file
sciorganization.ui.orgnization.add_member=Add member
sciorganization.ui.member.yes=Yes
sciorganization.ui.member.no=No
sciorganization.ui.organization.contacts=Contacts
sciorganization.ui.organization_members=Members of the organization
sciorganization.ui.organization.departments=Departments
sciorganization.ui.organization.projects=Projects
sciorganization.ui.organizsation_description.title=Description
sciorganization.ui.organization.properties.title=Properties
sciorganization.ui.organization.description.title=Description
sciorganization.ui.department.properties.title=Properties
sciorganization.ui.department.contacts=Contacts
sciorganization.ui.department.members=Members of the department
sciorganization.ui.department.subdepartments=Subdivisions
sciorganization.ui.department.projects=Projects of the department
sciorganization.ui.department.description.title=Description
sciorganization.ui.project_properties.title=Properties
sciorganization.ui.project.edit_basic_properties=Edit basic properties
sciorganization.ui.project.contacts=Contacts
sciorganization.ui.project.members=Members of the project
sciorganization.ui.project.subprojects=Subprojects
sciorganization.ui.project.organizations=Involved organizations
sciorganization.ui.project.departments=Involved departments
sciorganization.ui.project.publications=Publications of the project
sciorganization.ui.project_description.title=Description
sciorganization.ui.project.add_member\ =Add member
sciorganization.ui.project.subproject..confirm_remove=Are you sure to remove this subproject?
sciorganization.ui.project.superproject..confirm_remove=Are you sure to remove the superior project?
sciorganization.ui.project.add_member=Add member
sciorganization.ui.department.publications=Publications of the department
sciorganizations.ui.department.title=Name of the department
sciorganizations.ui.organization.title=Name of the organization
sciorganizations.ui.project.title=Name of the project
sciorganization.ui.project.funding_volume=Volume of funding
scimember.ui.basic_properties=Basic properties
scimember.ui.organization=Organization
scimember.ui.organization.role=Role
scimember.ui.organization.status=Status
scimember.ui.organization.edit=Edit
scimember.ui.organization.remove=Remove
scimember.ui.organizations.edit_assoc=Edit association
scimember.ui.organizations.remove=Remove assoication
scimember.ui.organization.add=Add member to organization
scimember.ui.organization.select_organization=Organization
scimember.ui.organization.confirm_remove=Do you really want to remove this association?
scimember.ui.departments=Departments
scimember.ui.projects=Projects
scimember.ui.organizations=Organizations
scimember.ui.department=Department
scimember.ui.department.role=Role
scimember.ui.department.status=Status
scimember.ui.department.edit=Edit
scimember.ui.department.remove=Remove
scimember.ui.departments.edit_assoc=Edit association
scimember.ui.departments.remove=Remove association
scimember.ui.department.add=Add member to department
scimember.ui.organizations.none=This member is not associated to any organization
scimember.ui.departments.none=This member is not associated to any department
scimember.ui.projects.none=This member is not associated to any project
scimember.ui.project.add=Add member to project
scimember.ui.project=Project
scimember.ui.project.role=Role
scimember.ui.project.status=Status
scimember.ui.project.edit=Edit
scimember.ui.project.remove=Remove
scimember.ui.project.edit_assoc=Edit association
scimember.ui.projects.remove=Remove association
scimember.ui.department.select_department=Department
scimember.ui.department.confirm_remove=Do you really want to remove this association?
scimember.ui.project.confirm_remove=Do you really want to remove this association?
scimember.ui.project.select_project=Project
scimember.ui.projects.edit_assoc=Edit association
sciorganization.ui.project.description=Description of project
sciorganization.ui.organization.department.add.no_suitable_language_variant=The selected item has no language variant for the language of the current item. Please add an suitable language variant to the item to add before adding it.
sciorganization.ui.department.organization.add.no_suitable_language_variant=The selected item has no language variant for the language of the current item. Please add an suitable language variant to the item to add before adding it.
sciorganization.ui.organization.department.add.already_added=The selected department has already been added to the current organization.
sciorganization.ui.organization.department.add.no_department_selected=No department selected.
sciorganization.ui.department.organization.add.no_organization_selected=No organization selected.
sciorganization.ui.department.select_project.no_project_selected=No project selected.
sciorganization.ui.department.select_project.no_suitable_language_variant=The select project is no available for the language of the current department item..
sciorganization.ui.department.select_project.already_added=The selected project has already been added to the projects of the current department item.
sciorganization.ui.department.select_subdepartment.no_department_selected=No department selected.
sciorganization.ui.department.select_subdepartment.no_suitable_language_variant=The selected department to add as subdepartment is not available for the language of the current department.
sciorganization.ui.department.select_subdepartment.adding_to_itself=It is not possible to add a department to itself as a sub department.
sciorganization.ui.department.select_subdepartment.already_added=The selected department is already an sub department of the current department.
sciorganization.ui.department.select_superdepartment.no_department_selected=No department selected.
sciorganization.ui.department.select_superdepartment.no_suitable_language_variant=The department selected to set as super department is not available in the language of the current department.
sciorganization.ui.department.select_superdepartment.same_department=It is not possible to set the super department of a department to itself.
scimember.ui.department.select_department.no_department_selected=No department selected.
scimember.ui.department.select_department.no_suitable_language_variant=The department to add is not available for the language of the current member item.
scimember.ui.department.select_department.already_added=The current member is already a member of the selected department.
scimember.ui.organization.select_organization.no_orga_selected=No organization selected.
scimember.ui.organization.select_organization.no_suitable_language_variant=The selected organization is not available for the language of the current member item.
scimember.ui.organization.select_organization.already_added=The current member is already a member of the selected organization.
scimember.ui.project.select_project.no_project_selected=No project selected.
scimember.ui.project.select_project.no_suitable_language_variant=The selected project is not available for the language of the current member item.
scimember.ui.project.select_project.already_added=The current member is already a member of the selected project.
sciorganization.ui.organization.select_project.no_project_selected=No project selected.
sciorganization.ui.organization.select_project.no_suitable_language_variant=The selected project is not available for the language of the current organization item.
sciorganization.ui.organization.select_project.already_added=The selected project is already a project of the current organization.
sciorganization.ui.project.select_department.no_department_selected=No department selected.
sciorganization.ui.project.select_department.no_suitable_language_variant=The selected department is not available for the language of the current project item.
sciorganization.ui.project.select_department.already_added=The current project is already a project of the selected department.
sciorganization.ui.project.select_organization.no_organization_selected=No organization selected.
sciorganization.ui.project.select_organization.no_suitable_language_variant=The selected organization is not available for the language of the current project item.
sciorganization.ui.project.select_organization.already_added=The current project is already a project of the selected organization.
sciorganization.ui.project.select_subproject.no_project_selected=No project selected.
sciorganization.ui.project.select_subproject.no_suitable_language_variant=The selected sub project is not available for the language of the current project.
sciorganization.ui.project.select_subproject.same_project=A project can't be a sub project of itself.
sciorganization.ui.project.select_subproject.already_added=The selected project is already a sub project of the current project.
sciorganization.ui.project.select_superproject.no_project_selected=No project selected.
sciorganization.ui.project.select_superproject.no_suitable_language_variant=The selected super project is not available for the language of the current project item.
sciorganization.ui.project.select_superproject.same_project=A project can't be the super project of itself.
sciorganization.ui.selectDepartment.no_department_selected=No department selected.
sciorganization.ui.selectDepartment.no_suitable_language_variant=The selected department is not avaiable for the language of the current publication item.
sciorganization.ui.selectDepartment.already_added=The current publications has already been added to the list of publications of the selected department.
sciorganization.ui.selectOrganization.no_orga_selected=No organization selected.
sciorganization.ui.selectOrganization.no_suitable_language_variant=The selected organization is not avaiable for the language of the current publication item.
sciorganization.ui.selectOrganization.already_added=The current publication has already been added to the list of publications of the selected organization.
sciorganization.ui.selectProject.no_project_selected=No project selected.
sciorganization.ui.selectProject.no_suitable_language_variant=The selected project is not available for the language of the current publication item.
sciorganization.ui.selectProject.already_added=The current publications has already been added to the publication list of the selected project.
sciorganization.ui.selectPublication.no_publication_selected=No publication selected.
sciorganization.ui.selectPublication.no_suitable_language_variant=The selected publication is not available for the language of the current item.
sciorganization.ui.selectPublication.already_added=The selected publication has already been added to the publication list of the current item.

View File

@ -1,232 +0,0 @@
sciorganization.ui.project.subprojects.none=Keine Unterprojekte gefunden
sciorganization.ui.project.subproject=Unterprojekt
sciorganization.ui.project.subproject.remove=Unterprojekt entfernen
sciorganization.ui.project.subproject.up=Hoch
sciorganization.ui.project.subproject.down=Runter
sciorganization.ui.project.subproject.confirm_remove=Wollen sie dieses Unterprojekt wirklich entfernen?
sciorganization.ui.project.select_subproject=Projekt zum Hinzuf\u00fcgen als Unterprojekt ausw\u00e4hlen
sciorganization.ui.member.edit_basic_properties=Basiseigenschaften bearbeiten
sciorganization.ui.member.associatedMember=Assoziertes Mitglied?
sciorganization.ui.member.formerMember=Ehemaliges Mitglied?
sciorganization.ui.project.edit_desc=Beschreibung bearbeiten
sciorganization.ui.project.upload_desc=Beschreibung hochladen
sciorganization.ui.project.desc=Projektbeschreibung
sciorganization.ui.project.funding=Finanzierung
sciorganization.ui.organization.add_department=Abteilung hinzuf\u00fcgen
sciorganization.ui.department.add_project=Projekt hinzuf\u00fcgen
sciorganization.ui.organization.add_project=Projekt hinzuf\u00fcgen
sciorganization.ui.department.edit_basic_properties=Basiseigenschaften bearbeiten
sciorganization.ui.department.basic_properties=Basiseigenschaften
sciorganization.ui.organization.edit_basic_sheet=Basiseigenschaften
sciorganization.ui.organization.basic_properties=Basiseigenschaften
sciorganization.ui.project.begin=Begin des Projektes
sciorganization.ui.project.end=Ende des Projektes
sciorganization.ui.project.shortdesc=Kurzbeschreibung
sciorganization.ui.project.edit_basic_sheet=Basiseigenschaften
sciorganization.ui.project.basic_properties=Basiseigenschaften
sciorganization.ui.department.add_subdepartment=Unterabteilung hinzuf\u00fcgen
sciorganization.ui.organization.departments.none=Keine Abteilungen gefunden
sciorganization.ui.organization.department=Abteilung
sciorganization.ui.organization.department.remove=Abteilung entfernen
sciorganization.ui.organization.department.up=Hoch
sciorganization.ui.organization.department.down=Runter
sciorganization.ui.organization.department.confirm_remove=Wollen sie diese Abteilung wirklich entfernen?
sciorganization.ui.department.projects.none=Keine Projekte gefunden
sciorganization.ui.department.project=Projekt
sciorganization.ui.department.project.remove=Projekt entfernen
sciorganization.ui.department.project.up=Hoch
sciorganization.ui.department.project.down=Runter
sciorganization.ui.department.project.confirm_remove=Wollen sie dieses Projekt wirklich entfernen?
sciorganization.ui.organization.select_department=Abteilung zum hinzuf\u00fcgen ausw\u00e4hlen
sciorganization.ui.organization.projects.none=Keine Projekte gefunden
sciorganization.ui.organization.project=Projekt
sciorganization.ui.organization.project.remove=Projekt entfernen
sciorganization.ui.organization.project.up=Hoch
sciorganization.ui.organization.project.down=Runter
sciorganization.ui.organization.project.confirm_remove=Wollen sie dieses Projekt wirklich entfernen?
sciorganization.ui.project.addSubProject=Unterprojekt hinzuf\u00fcgen
sciorganization.ui.department.select_project=Projekt zum hinzuf\u00fcgen ausw\u00e4hlen
sciorganization.ui.organization.select_project=Projekt zum hinzuf\u00fcgen ausw\u00e4hlen
sciorganization.ui.department.subdepartments.none=Keine Unterabteilungen gefunden
sciorganization.ui.department.subdepartment=Unterabteilung
sciorganization.ui.department.subdepartment.remove=Unterabteilung entfernen
sciorganization.ui.department.subdepartment.up=Hoch
sciorganization.ui.department.subdepartment.down=Runter
sciorganization.ui.department.subdepartment.confirm_remove=Wollen sie diese Unterabteilung wirklich entfernen
sciorganizations.ui.department.shortdescription=Kurzbeschreibung
sciorganizations.ui.organization.shortdescription=Kurzbeschreibung
sciorganization.ui.department.select_subdepartment=Unterabteilung zum hinzuf\u00fcgen ausw\u00e4hlen
sciorganization.ui.department.add_member=Mitglied hinzuf\u00fcgen
sciorganizations.ui.project.shortdesc=Kurzbeschreibung
sciorganization.ui.project.addDepartment=Beteiligte Abteilung hinzuf\u00fcgen
sciorganization.ui.project.addOrga=Beteiligte Organization hinzuf\u00fcgen
sciorganization.ui.project.departments.none=Keine beteiligen Abteilungen gefunden
sciorganization.ui.project.department=Beteiligte Abteilung
sciorganization.ui.project.department.remove=Beteiligte Abteilung entfernen
sciorganization.ui.project.department.up=Hoch
sciorganization.ui.project.department.down=Runter
sciorganization.ui.project.organization.confirm_remove=Wollen diese beteiligte Organization wirklich entfernen?
sciorganization.ui.project.select_organization=Organisation zum hinzuf\u00fcgen ausw\u00e4hlen
sciorganization.ui.project.organization.none=Keine beteiligten Organisationen gefunden
sciorganization.ui.project.organization=Beteiligte Organisation
sciorganization.ui.project.organization.remove=Beteiligte Organisation entfernen
sciorganization.ui.project.organization.up=Hoch
sciorganization.ui.project.organization.down=Runter
sciorganization.ui.project.select_department=Abteilung zum hinzuf\u00fcgen ausw\u00e4hlen
sciorganization.ui.project.superproject_none=Kein \u00fcbergeordnetes Projekt gefunden
sciorganization.ui.project.superproject=\u00dcbergeordnetes Projekt
sciorganization.ui.project.superproject.remove=\u00dcbergeordnetes Projekt entfernen
sciorganization.ui.project.superproject.confirm_remove=Wollen sie dieses \u00fcbergeordnete Projekt wirklich entfernen?
sciorganization.ui.department.select_superdepartment=\u00dcbergeordnete Abteilung
sciorganization.ui.project.setSuperProject=\u00dcbergeordnetes Projekt setzen
sciorganization.ui.project.description.upload=Projektbeschreibung hochladen
sciorganization.ui.project.description.upload.mimetype=Dateityp
sciorganization.ui.organization.edit_desc=Beschreibung bearbeiten
sciorganization.ui.organization.upload_desc=Beschreibung hochladen
sciorganization.ui.organization.desc=Beschreibung
sciorganization.ui.organization.description=Beschreibung
sciorganization.ui.organization.description.upload=Beschriebung hochladen
sciorganization.ui.organization.description.upload.mimetype=Dateityp
sciorganization.ui.project.select_superproject=\u00dcbergeordnetes Projekt ausw\u00e4hlen
sciorganization.ui.department.setSuperDepartment=\u00dcbergeordnete Abteilung setzen
sciorganization.ui.department.superdepartment_none=Keine \u00fcbergeordnete Abteilung gefunden
sciorganization.ui.department.superdepartment=\u00dcbergeordnete Abteilung
sciorganization.ui.department.superdepartment.remove=\u00dcbergeordnete Abteilung entfernen
sciorganization.ui.department.superdepartment.confirm_remove=Wollen sie die \u00fcbergeordnete Abteilung wirklich entfernen?
sciorganization.ui.department.setOrganization=Organization setzen
sciorganization.ui.department.select_organization=Organization ausw\u00e4hlen
sciorganization.ui.department.organization_none=Keine zugeordnete Organization gefunden
sciorganization.ui.department.organization=Organisation
sciorganization.ui.department.organization.remove=Zugeordnete Organisation entfernen
sciorganization.ui.department.organization.confirm_remove=Wollen sie zugeordnete Organisation wirklich entfernen?
sciorganization.ui.department.edit_desc=Beschreibung bearbeiten
sciorganization.ui.department.upload_desc=Beschreibung hochladen
sciorganization.ui.department.desc=Beschreibung
sciorganization.ui.department.description=Beschreibung
sciorganization.ui.department.description.upload=Beschreibung hochladen
sciorganization.ui.department.description.upload.mimetype=Dateityp
sciorganization.ui.orgnization.add_member=Mitglied hinzuf\u00fcgen
sciorganization.ui.member.yes=Ja
sciorganization.ui.member.no=Nein
sciorganization.ui.organization.contacts=Kontakte
sciorganization.ui.organization_members=Mitglieder der Organisation
sciorganization.ui.organization.departments=Abteilungen
sciorganization.ui.organization.projects=Projekte
sciorganization.ui.organizsation_description.title=Beschreibung
sciorganization.ui.organization.properties.title=Eigenschaften
sciorganization.ui.organization.description.title=Beschreibung
sciorganization.ui.department.properties.title=Eigenschaften
sciorganization.ui.department.contacts=Kontakte
sciorganization.ui.department.members=Mitglieder der Abteilung
sciorganization.ui.department.subdepartments=Unterabteilungen
sciorganization.ui.department.projects=Projekte der Abteilung
sciorganization.ui.department.description.title=Beschreibung
sciorganization.ui.project_properties.title=Eigenschaften
sciorganization.ui.project.edit_basic_properties=Basiseigenschaften bearbeiten
sciorganization.ui.project.contacts=Kontakte
sciorganization.ui.project.members=Mitglieder des Projektes
sciorganization.ui.project.subprojects=Unterprojekte
sciorganization.ui.project.organizations=Beteiligte Organisationen
sciorganization.ui.project.departments=Beteiligte Abteilungen
sciorganization.ui.project.publications=Publikationen des Projektes
sciorganization.ui.project_description.title=Beschreibung
sciorganization.ui.project.add_member\ =Mitglied hinzuf\u00fcgen
sciorganization.ui.project.subproject..confirm_remove=Sind sie sicher das sie dieses Unterprojekt entfernen wollen?
sciorganization.ui.project.superproject..confirm_remove=Wollen sie dieses \u00fcbergeordnete Projekt wirklich entfernen?
sciorganization.ui.project.add_member=Mitglied hinzuf\u00fcgen
sciorganization.ui.department.publications=Publikationen der Abteilung
sciorganizations.ui.department.title=Bezeichnung der Abteilung
sciorganizations.ui.organization.title=Name der Organisation
sciorganizations.ui.project.title=Name des Projektes
sciorganization.ui.project.funding_volume=Volumen der Finanzierung
scimember.ui.basic_properties=Basiseigenschaften
scimember.ui.organization=Organisation
scimember.ui.organization.role=Rolle
scimember.ui.organization.status=Status
scimember.ui.organization.edit=Bearbeiten
scimember.ui.organization.remove=Entfernen
scimember.ui.organizations.edit_assoc=Verkn\u00fcpfung bearbeiten
scimember.ui.organizations.remove=Verkn\u00fcpfung entfernen
scimember.ui.organization.add=Mitglied einer Organisation hinzuf\u00fcgen
scimember.ui.organization.select_organization=Organisation
scimember.ui.organization.confirm_remove=Wollen Sie diese Verkn\u00fcpfung wirklich entfernen?
scimember.ui.departments=Abteilungen
scimember.ui.projects=Projekte
scimember.ui.organizations=Organisationen
scimember.ui.department=Abteilung
scimember.ui.department.role=Rolle
scimember.ui.department.status=Status
scimember.ui.department.edit=Bearbeiten
scimember.ui.department.remove=Entfernen
scimember.ui.departments.edit_assoc=Verkn\u00fcpfung bearbeiten
scimember.ui.departments.remove=Verkn\u00fcpfung entfernen
scimember.ui.department.add=Mitglied einer Abteilung hinzuf\u00fcgen
scimember.ui.organizations.none=Dieses Mitglied ist keinen Organisationen zugeordnet
scimember.ui.departments.none=Dieses Mitglied ist keinen Abteilungen zugeordnet
scimember.ui.projects.none=Dieses Mitglied ist keinen Projekten zugeordnet
scimember.ui.project.add=Mitglied einem Projekt hinzuf\u00fcgen
scimember.ui.project=Projekt
scimember.ui.project.role=Rolle
scimember.ui.project.status=Status
scimember.ui.project.edit=Bearbeiten
scimember.ui.project.remove=Entfernen
scimember.ui.project.edit_assoc=Verkn\u00fcpfung bearbeiten
scimember.ui.projects.remove=Verkn\u00fcpfung entfernen
scimember.ui.department.select_department=Abteilung
scimember.ui.department.confirm_remove=Wollen Sie diese Verkn\u00fcpfung wirklich entfernen?
scimember.ui.project.confirm_remove=Wollen Sie diese Verkn\u00fcpfung wirklich entfernen?
scimember.ui.project.select_project=Projekt
scimember.ui.projects.edit_assoc=Verkn\u00fcpfung bearbeiten
sciorganization.ui.project.description=Projektbeschreibung
sciorganization.ui.organization.department.add.no_suitable_language_variant=Das ausgew\u00e4hlte ContentItem besitzt keine Sprachvariante f\u00fcr die Sprache dieses Items und kann daher nicht hinzugef\u00fcgt werden.
sciorganization.ui.department.organization.add.no_suitable_language_variant=Das ausgew\u00e4hlte ContentItem besitzt keine Sprachvariante f\u00fcr die Sprache dieses Items und kann daher nicht hinzugef\u00fcgt werden.
sciorganization.ui.organization.department.add.already_added=Die ausgew\u00e4hlte Abteilung wurde der aktuellen Organisation bereits hinzugef\u00fcgt.
sciorganization.ui.organization.department.add.no_department_selected=Keine Abteilung ausgew\u00e4hlt.
sciorganization.ui.department.organization.add.no_organization_selected=Keine Organisation ausgew\u00e4hlt.
sciorganization.ui.department.select_project.no_project_selected=Kein Project ausgew\u00e4hlt.
sciorganization.ui.department.select_project.no_suitable_language_variant=Das ausgew\u00e4hlte Projekt ist f\u00fcr die Sprache des aktuellen Abteilungs-Items nicht verf\u00fcgbar.
sciorganization.ui.department.select_project.already_added=Das ausgew\u00e4hlte Projekt wurde dem aktuellen Abteilungs-Item bereits hinzugef\u00fcgt.
sciorganization.ui.department.select_subdepartment.no_department_selected=Keine Abteilung ausgew\u00e4hlt.
sciorganization.ui.department.select_subdepartment.no_suitable_language_variant=Die zum hinzuf\u00fcgen als Unterabteilung ausw\u00e4hlte Abteilung ist f\u00fcr die Sprache der aktuellen Abteilung nicht verf\u00fcgbar.
sciorganization.ui.department.select_subdepartment.adding_to_itself=Eine Abteilung kann nicht sich selbst als Unterabteilung zugewiesen werden.
sciorganization.ui.department.select_subdepartment.already_added=Die ausgew\u00e4hlte Abteilung ist bereits eine Unterabteilung der aktuellen Abteilung.
sciorganization.ui.department.select_superdepartment.no_department_selected=Keine Abteilung ausgew\u00e4hlt.
sciorganization.ui.department.select_superdepartment.no_suitable_language_variant=Die als \u00fcbergeordnete Abteilung ausgew\u00e4hlte Abteilung ist nicht in der Sprache der aktuellen Abteilung verf\u00fcgbar.
sciorganization.ui.department.select_superdepartment.same_department=Eine Abteilung kann nicht ihre eigene \u00fcbergeordnete Abteilung sein.
scimember.ui.department.select_department.no_department_selected=Keine Abteilung ausgew\u00e4hlt.
scimember.ui.department.select_department.no_suitable_language_variant=Die ausgew\u00e4hlte Abteilung ist nicht f\u00fcr die Sprache des aktuellen Mitglieds-Items verf\u00fcgbar.
scimember.ui.department.select_department.already_added=Das aktuelle Mitglieder ist bereits ein Mitglied der ausgew\u00e4hlten Abteilung.
scimember.ui.organization.select_organization.no_orga_selected=Keine Organisation ausgew\u00e4hlt.
scimember.ui.organization.select_organization.no_suitable_language_variant=Die ausgew\u00e4hlte Organisation ist f\u00fcr die Sprache des aktuellen Mitglieds-Items nicht verf\u00fcgbar.
scimember.ui.organization.select_organization.already_added=Das aktuelle Mitglied ist bereits Mitglied der ausgew\u00e4hlten Organisation.
scimember.ui.project.select_project.no_project_selected=Kein Projekt ausgew\u00e4hlt.
scimember.ui.project.select_project.no_suitable_language_variant=Das ausgew\u00e4hlte Projekt ist f\u00fcr die Sprache des aktuellen Mitglieds-Items nicht verf\u00fcgbar.
scimember.ui.project.select_project.already_added=Das aktuelle Mitglied ist bereits ein Mitglied des ausgew\u00e4hlten Projektes.
sciorganization.ui.organization.select_project.no_project_selected=Kein Projekt ausgew\u00e4hlt.
sciorganization.ui.organization.select_project.no_suitable_language_variant=Das ausgew\u00e4hlte Projekt ist nicht f\u00fcr die Sprache des aktuellen Organisations-Items verf\u00fcgbar.
sciorganization.ui.organization.select_project.already_added=Das ausgew\u00e4hlte Projekt ist bereits ein Projekt der aktuellen Organisation.
sciorganization.ui.project.select_department.no_department_selected=Kein Projekt ausgew\u00e4hlt.
sciorganization.ui.project.select_department.no_suitable_language_variant=Die ausgew\u00e4hlte Abteilung ist nicht f\u00fcr die Sprache des aktuellen Projekt-Items verf\u00fcgbar.
sciorganization.ui.project.select_department.already_added=Das aktuelle Projekt ist bereits ein Projekt der ausgew\u00e4hlten Abteilung.
sciorganization.ui.project.select_organization.no_organization_selected=Keine Organisation ausgew\u00e4hlt.
sciorganization.ui.project.select_organization.no_suitable_language_variant=Die ausgew\u00e4hlte Organisation ist nicht f\u00fcr die Sprache des aktuellen Projekt-Items verf\u00fcgbar.
sciorganization.ui.project.select_organization.already_added=Das aktuelle Projekt is bereits ein Projekt der der ausgew\u00e4hlten Organisation.
sciorganization.ui.project.select_subproject.no_project_selected=Kein Projekt ausgew\u00e4hlt.
sciorganization.ui.project.select_subproject.no_suitable_language_variant=Das ausgew\u00e4hlte Unterprojekt ist nicht f\u00fcr die Sprache des aktuellen Projektes verf\u00fcgbar.
sciorganization.ui.project.select_subproject.same_project=Ein Projekt kann kein Unterprojekt von sich selbst sein.
sciorganization.ui.project.select_subproject.already_added=Das ausgew\u00e4hlte Projekt ist bereits ein Unterprojekt des aktuellen Projektes.
sciorganization.ui.project.select_superproject.no_project_selected=Kein Projekt ausgew\u00e4hlt.
sciorganization.ui.project.select_superproject.no_suitable_language_variant=Das ausgew\u00e4hlte Hauptprojekt ist nicht f\u00fcr die Sprache des aktuellen Projektes verf\u00fcgbar.
sciorganization.ui.project.select_superproject.same_project=Ein Projekt kann nicht sein eigenes Hauptprojekt sein.
sciorganization.ui.selectDepartment.no_department_selected=Keine Abteilung ausgew\u00e4hlt.
sciorganization.ui.selectDepartment.no_suitable_language_variant=Die ausgew\u00e4hlte Abteilung ist nicht f\u00fcr die Sprache des aktuellen Publikations-Items verf\u00fcgbar.
sciorganization.ui.selectDepartment.already_added=Die aktuelle Publikation wurde bereits der Publikationsliste der ausgew\u00e4hlten Abteilung hinzugef\u00fcgt.
sciorganization.ui.selectOrganization.no_orga_selected=Keine Organisation ausgew\u00e4hlt.
sciorganization.ui.selectOrganization.no_suitable_language_variant=Die ausgew\u00e4hlte Organisation ist nicht f\u00fcr die Sprache der aktuellen Publikation verf\u00fcgbar.
sciorganization.ui.selectOrganization.already_added=Die aktuelle Publikation wurde bereits der Liste der Publikationen der ausgew\u00e4hlten Organisation hinzugef\u00fcgt.
sciorganization.ui.selectProject.no_project_selected=Kein Projekt ausgew\u00e4hlt.
sciorganization.ui.selectProject.no_suitable_language_variant=Das ausgew\u00e4hlte Projekt ist nicht f\u00fcr die Sprache des aktuellen Publikations-Items verf\u00fcgbar.
sciorganization.ui.selectProject.already_added=Die aktuelle Publikation wurde bereits der Publikationsliste des ausgew\u00e4hlten Projektes hinzugef\u00fcgt.
sciorganization.ui.selectPublication.no_publication_selected=Keine Publikation ausgew\u00e4hlt.
sciorganization.ui.selectPublication.no_suitable_language_variant=Die ausgew\u00e4hlte Publikation ist nicht f\u00fcr die Sprache des aktuellen Items verf\u00fcgbar.
sciorganization.ui.selectPublication.already_added=Die ausgew\u00e4hlte Publikation ist bereits Teil der Publikationsliste des aktuellen Items.

View File

@ -1,127 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.contenttypes.SciProjectDepartmentsCollection;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
* Form for adding a link between a {@link SciProject} and a
* {@link SciDepartment}.
*
* @author Jens Pelzetter
*/
public class SciProjectDepartmentAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private ItemSearchWidget m_itemSearch;
private final String ITEM_SEARCH = "projectDepartment";
public SciProjectDepartmentAddForm(ItemSelectionModel itemModel) {
super("projectDepartmentAddForm", itemModel);
}
@Override
protected void addWidgets() {
add(new Label(SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.project.select_department")));
m_itemSearch = new ItemSearchWidget(
ITEM_SEARCH,
ContentType.findByAssociatedObjectType(
SciDepartment.class.getName()));
add(m_itemSearch);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData();
PageState state = fse.getPageState();
SciProject project = (SciProject) getItemSelectionModel().
getSelectedObject(state);
if (!(this.getSaveCancelSection().getCancelButton().
isSelected(state))) {
SciDepartment department = (SciDepartment) data.get(ITEM_SEARCH);
department = (SciDepartment) department.getContentBundle().
getInstance(project.getLanguage());
project.addDepartment(department);
}
init(fse);
}
@Override
public void validate(FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.project.select_department.no_department_selected"));
return;
}
SciProject project = (SciProject) getItemSelectionModel().
getSelectedObject(state);
SciDepartment department = (SciDepartment) data.get(ITEM_SEARCH);
if (!(department.getContentBundle().hasInstance(project.getLanguage()))) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.project.select_department.no_suitable_language_variant"));
return;
}
department = (SciDepartment) department.getContentBundle().getInstance(project.
getLanguage());
SciProjectDepartmentsCollection departments = project.getDepartments();
departments.addFilter(String.format("id = %s", department.getID().
toString()));
if (departments.size() > 0) {
data.addError(
SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.project.select_department.already_added"));
}
departments.close();
}
}

View File

@ -1,60 +0,0 @@
/*
* Copyright (c) 2010 Jens Pelzetter,
* for the Center of Social Politics of the University of Bremen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
/**
* Step for adding and removing links between a {@link SciProject} and a
* {@link SciDepartment}.
*
* @author Jens Pelzetter
*/
public class SciProjectDepartmentsStep extends SimpleEditStep {
private String PROJECT_ADD_DEPARTMENT_SHEET_NAME = "projectAddDepartment";
public SciProjectDepartmentsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciProjectDepartmentsStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent,
String prefix) {
super(itemModel, parent, prefix);
BasicItemForm addDepartmentForm =
new SciProjectDepartmentAddForm(itemModel);
add(PROJECT_ADD_DEPARTMENT_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.project.addDepartment").localize(),
new WorkflowLockedComponentAccess(addDepartmentForm, itemModel),
addDepartmentForm.getSaveCancelSection().getCancelButton());
setDisplayComponent(new SciProjectDepartmentsTable(itemModel));
}
}

Some files were not shown because too many files have changed in this diff Show More