diff --git a/ccm-sci-personalprojects/src/com/arsdigita/cms/publicpersonalprofile/PersonalProjects.java b/ccm-sci-personalprojects/src/com/arsdigita/cms/publicpersonalprofile/PersonalProjects.java index 711deff09..90c1df64d 100644 --- a/ccm-sci-personalprojects/src/com/arsdigita/cms/publicpersonalprofile/PersonalProjects.java +++ b/ccm-sci-personalprojects/src/com/arsdigita/cms/publicpersonalprofile/PersonalProjects.java @@ -11,7 +11,11 @@ import com.arsdigita.cms.contenttypes.GenericPersonContactCollection; import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.kernel.Kernel; import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.Filter; +import com.arsdigita.persistence.FilterFactory; import com.arsdigita.persistence.OID; import com.arsdigita.xml.Element; import java.util.ArrayList; @@ -40,37 +44,37 @@ public class PersonalProjects implements ContentGenerator { private final static String CURRENT_PROJECTS = "currentProjects"; private final static String FINISHED_PROJECTS = "finishedProjects"; private final static PersonalProjectsConfig config = - new PersonalProjectsConfig(); + new PersonalProjectsConfig(); private final static Logger logger = - Logger.getLogger(PersonalProjects.class); + Logger.getLogger(PersonalProjects.class); static { config.load(); } public void generateContent(final Element parent, - final GenericPerson person, - final PageState state) { + final GenericPerson person, + final PageState state) { final List projects = collectProjects(person); final Element personalProjectsElem = parent.newChildElement( "personalProjects"); - if ((projects == null) || projects.isEmpty()) { + if ((projects == null) || projects.isEmpty()) { personalProjectsElem.newChildElement("noProjects"); return; } else { final List currentProjects = new ArrayList(); final List finishedProjects = - new ArrayList(); + new ArrayList(); processProjects(projects, currentProjects, finishedProjects); generateGroupsXml(personalProjectsElem, currentProjects, finishedProjects); generateProjectsXml(personalProjectsElem, - currentProjects, - finishedProjects, - state); + currentProjects, + finishedProjects, + state); } } @@ -79,6 +83,17 @@ public class PersonalProjects implements ContentGenerator { final DataCollection collection = (DataCollection) person.get( "organizationalunit"); + if (Kernel.getConfig().languageIndependentItems()) { + FilterFactory ff = collection.getFilterFactory(); + Filter filter = ff.or(). + addFilter(ff.equals("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage())). + addFilter(ff.and(). + addFilter(ff.equals("language", GlobalizationHelper.LANG_INDEPENDENT)). + addFilter(ff.notIn("parent", "com.arsdigita.london.navigation.getParentIDsOfMatchedItems").set("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage()))); + collection.addFilter(filter); + } else { + collection.addEqualsFilter("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage()); + } DomainObject obj; while (collection.next()) { obj = DomainObjectFactory.newInstance(collection.getDataObject()); @@ -97,7 +112,7 @@ public class PersonalProjects implements ContentGenerator { } private void collectProjects(final GenericPerson alias, - final List projects) { + final List projects) { final DataCollection collection = (DataCollection) alias.get( "organizationalunit"); DomainObject obj; @@ -115,13 +130,13 @@ public class PersonalProjects implements ContentGenerator { } private void processProjects(final List projects, - final List currentProjects, - final List finishedProjects) { + final List currentProjects, + final List finishedProjects) { final Calendar today = new GregorianCalendar(); final Date todayDate = today.getTime(); for (SciProject project : projects) { - if ((project.getEnd() != null) - && project.getEnd().before(todayDate)) { + if ((project.getEnd() != null) + && project.getEnd().before(todayDate)) { finishedProjects.add(project); } else { currentProjects.add(project); @@ -134,8 +149,8 @@ public class PersonalProjects implements ContentGenerator { } private void generateGroupsXml(final Element parent, - final List currentProjects, - final List finishedProjects) { + final List currentProjects, + final List finishedProjects) { final Element availableGroups = parent.newChildElement( "availableProjectGroups"); @@ -149,32 +164,32 @@ public class PersonalProjects implements ContentGenerator { } private void createAvailableProjectGroupXml(final Element parent, - final String name) { + final String name) { final Element group = parent.newChildElement("availableProjectGroup"); group.addAttribute("name", name); } private void generateProjectsXml(final Element parent, - final List currentProjects, - final List finishedProjects, - final PageState state) { + final List currentProjects, + final List finishedProjects, + final PageState state) { final Element projectsElem = parent.newChildElement("projects"); final int numberOfProjects = currentProjects.size() - + finishedProjects.size(); + + finishedProjects.size(); final int groupSplit = config.getGroupSplit(); if (numberOfProjects < groupSplit) { projectsElem.addAttribute("all", "all"); generateProjectsGroupXml(projectsElem, - CURRENT_PROJECTS, - currentProjects, - state); + CURRENT_PROJECTS, + currentProjects, + state); generateProjectsGroupXml(projectsElem, - FINISHED_PROJECTS, - finishedProjects, - state); + FINISHED_PROJECTS, + finishedProjects, + state); } else { final HttpServletRequest request = state.getRequest(); @@ -184,29 +199,29 @@ public class PersonalProjects implements ContentGenerator { } if (currentProjects.isEmpty() - && CURRENT_PROJECTS.equals(groupToShow)) { + && CURRENT_PROJECTS.equals(groupToShow)) { groupToShow = FINISHED_PROJECTS; } if (CURRENT_PROJECTS.equals(groupToShow)) { generateProjectsGroupXml(projectsElem, - CURRENT_PROJECTS, - currentProjects, - state); + CURRENT_PROJECTS, + currentProjects, + state); } else if (FINISHED_PROJECTS.equals(groupToShow)) { generateProjectsGroupXml(projectsElem, - FINISHED_PROJECTS, - finishedProjects, - state); + FINISHED_PROJECTS, + finishedProjects, + state); } } } private void generateProjectsGroupXml(final Element projectsElem, - final String groupName, - final List projects, - final PageState state) { + final String groupName, + final List projects, + final PageState state) { if (projects == null) { return; } @@ -220,8 +235,8 @@ public class PersonalProjects implements ContentGenerator { } private void generateProjectXml(final Element projectGroupElem, - final SciProject project, - final PageState state) { + final SciProject project, + final PageState state) { /*final PublicPersonalProfileXmlGenerator generator = new PublicPersonalProfileXmlGenerator( project); @@ -235,13 +250,13 @@ public class PersonalProjects implements ContentGenerator { //Element beginElem = projectElem.newChildElement("projectbegin"); if ((project.getAddendum() != null) - && !(project.getAddendum().isEmpty())) { + && !(project.getAddendum().isEmpty())) { Element addendum = projectElem.newChildElement("addendum"); addendum.setText(project.getAddendum()); } if ((project.getProjectShortDescription() != null) - && !(project.getProjectShortDescription().isEmpty())) { + && !(project.getProjectShortDescription().isEmpty())) { Element shortDesc = projectElem.newChildElement("shortDescription"); shortDesc.setText(project.getProjectShortDescription()); } @@ -255,18 +270,18 @@ public class PersonalProjects implements ContentGenerator { 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); + members.getSurname(), + members.getGivenName(), + members.getTitlePre(), + members.getTitlePost(), + members.getBirthdate(), + members.getGender(), + null, members.getRoleName(), + members.getStatus()), + membersElem, + members.getRoleName(), + members.getStatus(), + state); } } @@ -278,22 +293,22 @@ public class PersonalProjects implements ContentGenerator { while (contacts.next()) { generateContactXML(contacts.getContactType(), - contacts.getPerson(), - contacts.getContactEntries(), - contacts.getAddress(), - contactsElem, - state, - Integer.toString(contacts.getContactOrder()), - true); + contacts.getPerson(), + contacts.getContactEntries(), + contacts.getAddress(), + contactsElem, + state, + Integer.toString(contacts.getContactOrder()), + true); } } } protected void generateMemberXML(final MemberListItem person, - final Element parent, - final String roleName, - final String status, - final PageState state) { + final Element parent, + final String roleName, + final String status, + final PageState state) { Element memberElem = parent.newChildElement("member"); memberElem.addAttribute("role", roleName); @@ -304,7 +319,7 @@ public class PersonalProjects implements ContentGenerator { //title.setText(person.getTitle()); if ((person.getTitlePre() != null) - && !person.getTitlePre().isEmpty()) { + && !person.getTitlePre().isEmpty()) { Element titlePre = memberElem.newChildElement("titlePre"); titlePre.setText(person.getTitlePre()); } @@ -316,13 +331,13 @@ public class PersonalProjects implements ContentGenerator { givenName.setText(person.getGivenName()); if ((person.getTitlePost() != null) - && !person.getTitlePost().isEmpty()) { + && !person.getTitlePost().isEmpty()) { Element titlePost = memberElem.newChildElement("titlePost"); titlePost.setText(person.getTitlePost()); } if ((person.getContacts() != null) - && (person.getContacts().size() > 0)) { + && (person.getContacts().size() > 0)) { GenericPersonContactCollection contacts; contacts = new GenericPersonContactCollection(person.getContacts()); @@ -378,7 +393,7 @@ public class PersonalProjects implements ContentGenerator { surname.setText(person.getSurname()); if ((person.getTitlePost() != null) - && !person.getTitlePost().isEmpty()) { + && !person.getTitlePost().isEmpty()) { Element titlePost = contactElem.newChildElement( "titlePost"); titlePost.setText(person.getTitlePost()); @@ -387,23 +402,23 @@ public class PersonalProjects implements ContentGenerator { } if ((contactEntries != null) - && (contactEntries.size() > 0)) { + && (contactEntries.size() > 0)) { Element contactEntriesElem = contactElem.newChildElement("contactEntries"); while (contactEntries.next()) { GenericContactEntry contactEntry = - contactEntries.getContactEntry(); + contactEntries.getContactEntry(); Element contactEntryElem = contactEntriesElem.newChildElement( "contactEntry"); contactEntryElem.addAttribute("key", - contactEntry.getKey()); + contactEntry.getKey()); Element valueElem = contactEntryElem.newChildElement( "value"); valueElem.setText(contactEntry.getValue()); if ((contactEntry.getDescription() != null) - && !contactEntry.getDescription().isEmpty()) { + && !contactEntry.getDescription().isEmpty()) { Element descElem = contactEntryElem.newChildElement( "description"); descElem.setText(contactEntry.getDescription()); @@ -443,34 +458,34 @@ public class PersonalProjects implements ContentGenerator { private String status; public MemberListItem(final GenericPerson member, - final String role, - final String status) { + 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); + 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) { + 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; @@ -546,36 +561,36 @@ public class PersonalProjects implements ContentGenerator { } final MemberListItem other = (MemberListItem) obj; if ((this.surname == null) ? (other.surname != null) - : !this.surname.equals(other.surname)) { + : !this.surname.equals(other.surname)) { return false; } if ((this.givenName == null) ? (other.givenName != null) - : !this.givenName.equals(other.givenName)) { + : !this.givenName.equals(other.givenName)) { return false; } if ((this.titlePre == null) ? (other.titlePre != null) - : !this.titlePre.equals(other.titlePre)) { + : !this.titlePre.equals(other.titlePre)) { return false; } if ((this.titlePost == null) ? (other.titlePost != null) - : !this.titlePost.equals(other.titlePost)) { + : !this.titlePost.equals(other.titlePost)) { return false; } if (this.birthdate != other.birthdate && (this.birthdate == null - || !this.birthdate.equals( - other.birthdate))) { + || !this.birthdate.equals( + other.birthdate))) { return false; } if ((this.gender == null) ? (other.gender != null) - : !this.gender.equals(other.gender)) { + : !this.gender.equals(other.gender)) { return false; } if ((this.role == null) ? (other.role != null) - : !this.role.equals(other.role)) { + : !this.role.equals(other.role)) { return false; } if ((this.status == null) ? (other.status != null) - : !this.status.equals(other.status)) { + : !this.status.equals(other.status)) { return false; } return true; @@ -589,20 +604,20 @@ public class PersonalProjects implements ContentGenerator { public int hashCode() { int hash = 3; hash = - 41 * hash + (this.surname != null ? this.surname.hashCode() : 0); + 41 * hash + (this.surname != null ? this.surname.hashCode() : 0); hash = - 41 * hash + (this.givenName != null ? this.givenName.hashCode() : 0); + 41 * hash + (this.givenName != null ? this.givenName.hashCode() : 0); hash = - 41 * hash + (this.titlePre != null ? this.titlePre.hashCode() : 0); + 41 * hash + (this.titlePre != null ? this.titlePre.hashCode() : 0); hash = - 41 * hash + (this.titlePost != null ? this.titlePost.hashCode() : 0); + 41 * hash + (this.titlePost != null ? this.titlePost.hashCode() : 0); hash = - 41 * hash + (this.birthdate != null ? this.birthdate.hashCode() : 0); + 41 * hash + (this.birthdate != null ? this.birthdate.hashCode() : 0); hash = - 41 * hash + (this.gender != null ? this.gender.hashCode() : 0); + 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); + 41 * hash + (this.status != null ? this.status.hashCode() : 0); return hash; } } @@ -610,7 +625,7 @@ public class PersonalProjects implements ContentGenerator { private class ProjectComparator implements Comparator { public int compare(final SciProject project1, - final SciProject project2) { + final SciProject project2) { return project1.getTitle().compareTo(project2.getTitle()); } }