SciDepartmentMemberTab funktioniert wieder

git-svn-id: https://svn.libreccm.org/ccm/trunk@1614 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-04-25 11:48:19 +00:00
parent bace46dc05
commit ab1a6416ff
26 changed files with 276 additions and 297 deletions

View File

@ -1,4 +1,3 @@
package com.arsdigita.cms.contenttypes;
import org.apache.log4j.Logger;
@ -27,6 +26,21 @@ public class ContactInitializer extends ContentTypeInitializer {
Contact.BASE_DATA_OBJECT_TYPE);
}
// @Override
// public void init(final DomainInitEvent event) {
// super.init(event);
//
// DomainObjectFactory.registerInstantiator(Contact.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator() {
//
// @Override
// public DomainObject doNewInstance(DataObject dataObject) {
// s_log.error("Using ContactInitalizer...");
// return new Contact(dataObject);
// }
//
// });
// }
/**
* Retrieves fully qualified traversal adapter file name.
* @return

View File

@ -20,13 +20,6 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.contenttypes.ContentTypeInitializer;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.domain.DomainObjectInstantiator;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.runtime.DomainInitEvent;
import org.apache.log4j.Logger;
/**
@ -52,6 +45,21 @@ public class PersonInitializer extends ContentTypeInitializer {
super("ccm-cms-types-person.pdl.mf", Person.BASE_DATA_OBJECT_TYPE);
}
// @Override
// public void init(final DomainInitEvent event) {
// super.init(event);
//
// DomainObjectFactory.registerInstantiator(Person.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator() {
//
// @Override
// public DomainObject doNewInstance(DataObject dataObject) {
// s_log.error("Using PersonInitalizer...");
// return new Person(dataObject);
// }
//
// });
// }
//
/**
* Retrieve location of this content type's internal default theme
* stylesheet(s) which concomitantly serve as a fallback if a custom theme

View File

@ -102,18 +102,18 @@ query getIdsOfSubordinateOrgaUnitsRecursivly{
do {
with recursive subordinate_orgaunits(orgaunit_id, orgaunit_name) AS (
select cms_organizationalunits.organizationalunit_id as orgaunit_id,
select cms_orgaunit_bundles.bundle_id as orgaunit_id,
cms_items.name as orgaunit_name
from cms_organizationalunits
join cms_items on cms_organizationalunits.organizationalunit_id = cms_items.item_id
where cms_organizationalunits.organizationalunit_id = :orgaunitId
from cms_orgaunit_bundles
join cms_items on cms_orgaunit_bundles.bundle_id = cms_items.item_id
where cms_orgaunit_bundles.bundle_id = :orgaunitId
union all
select ou.organizationalunit_id as orgaunit_id,
select ou.bundle_id as orgaunit_id,
cms_items.name as orgaunit_name
from subordinate_orgaunits sou,
cms_organizationalunits ou
join cms_items on ou.organizationalunit_id = cms_items.item_id
join cms_organizationalunits_hierarchy_map on ou.organizationalunit_id = cms_organizationalunits_hierarchy_map.subordinate_orgaunit_id
cms_orgaunit_bundles ou
join cms_items on ou.bundle_id = cms_items.item_id
join cms_organizationalunits_hierarchy_map on ou.bundle_id = cms_organizationalunits_hierarchy_map.subordinate_orgaunit_id
where cms_organizationalunits_hierarchy_map.superior_orgaunit_id = sou.orgaunit_id
)
select orgaunit_id, orgaunit_name from subordinate_orgaunits
@ -123,7 +123,7 @@ query getIdsOfSubordinateOrgaUnitsRecursivly{
}
}
//Same as above but with an addional parameter
//Same as above but with an additional parameter
//@param orgaunitId The id of the organizational unit to start with
//@param assocType Include only subordinate orga units with the specified assoc
//type
@ -133,18 +133,18 @@ query getIdsOfSubordinateOrgaUnitsRecursivlyWithAssocType{
do {
with recursive subordinate_orgaunits(orgaunit_id, orgaunit_name) AS (
select cms_organizationalunits.organizationalunit_id as orgaunit_id,
select cms_orgaunit_bundles.bundle_id as orgaunit_id,
cms_items.name as orgaunit_name
from cms_organizationalunits
join cms_items on cms_organizationalunits.organizationalunit_id = cms_items.item_id
where cms_organizationalunits.organizationalunit_id = :orgaunitId
from cms_orgaunit_bundles
join cms_items on cms_orgaunit_bundles.bundle_id = cms_items.item_id
where cms_orgaunit_bundles.bundle_id = 17003
union all
select ou.organizationalunit_id as orgaunit_id,
select ou.bundle_id as orgaunit_id,
cms_items.name as orgaunit_name
from subordinate_orgaunits sou,
cms_organizationalunits ou
join cms_items on ou.organizationalunit_id = cms_items.item_id
join cms_organizationalunits_hierarchy_map on ou.organizationalunit_id = cms_organizationalunits_hierarchy_map.subordinate_orgaunit_id
cms_orgaunit_bundles ou
join cms_items on ou.bundle_id = cms_items.item_id
join cms_organizationalunits_hierarchy_map on ou.bundle_id = cms_organizationalunits_hierarchy_map.subordinate_orgaunit_id
where cms_organizationalunits_hierarchy_map.superior_orgaunit_id = sou.orgaunit_id and cms_organizationalunits_hierarchy_map.assoc_type = :assocType
)
select orgaunit_id, orgaunit_name from subordinate_orgaunits
@ -160,8 +160,7 @@ query getIdsOfSubordinateOrgaUnitsRecursivlyWithAssocType{
query getIdsOfMembersOfOrgaUnits {
BigDecimal memberId;
BigDecimal orgaunitId;
String surname;
String givenname;
String name;
String roleName;
String status;
@ -170,24 +169,21 @@ query getIdsOfMembersOfOrgaUnits {
}
do {
select distinct on (cms_persons.person_id)
cms_persons.person_id,
cms_persons.surname,
cms_persons.givenname,
select distinct on (cms_person_bundles.bundle_id)
cms_person_bundles.bundle_id,
cms_items.name,
cms_organizationalunits_person_map.organizationalunit_id,
cms_organizationalunits_person_map.role_name,
cms_organizationalunits_person_map.status
from cms_persons
join cms_organizationalunits_person_map on cms_persons.person_id = cms_organizationalunits_person_map.person_id
from cms_person_bundles
join cms_organizationalunits_person_map on cms_person_bundles.bundle_id = cms_organizationalunits_person_map.person_id
join cms_items on cms_person_bundles.bundle_id = cms_items.item_id
where cms_organizationalunits_person_map.organizationalunit_id in :orgaunitIds
} map {
memberId = cms_persons.person_id;
memberId = cms_person_bundles.bundle_id;
orgaunitId = cms_organizationalunits_person_map.organizationalunit_id;
surname = cms_persons.surname;
givenname = cms_persons.givenname;
name = cms_items.name;
roleName = cms_organizationalunits_person_map.role_name;
status = cms_organizationalunits_person_map.status;
}
}
//select distinct on (cms_persons.person_id)

View File

@ -153,6 +153,12 @@ public class GenericOrganizationalUnitSuperiorCollection extends DomainCollectio
return (GenericOrganizationalUnit) bundle.getPrimaryInstance();
}
public GenericOrganizationalUnit getGenericOrganizationalUnit(final String language) {
final ContentBundle bundle = (ContentBundle) DomainObjectFactory.
newInstance(m_dataCollection.getDataObject());
return (GenericOrganizationalUnit) bundle.getInstance(language);
}
public OID getOID() {
return m_dataCollection.getDataObject().getOID();
}

View File

@ -16,7 +16,8 @@ import com.arsdigita.xml.Element;
public class GenericOrgaUnitContactsTab implements GenericOrgaUnitTab {
@Override
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
return !getData(orgaunit).isEmpty();
}
@ -75,5 +76,6 @@ public class GenericOrgaUnitContactsTab implements GenericOrgaUnitTab {
protected ContentItem getContentItem(PageState state) {
return contact;
}
}
}

View File

@ -78,7 +78,7 @@ public abstract class GenericOrgaUnitExtraXmlGenerator
if ((showOnly == null) || showOnly.isEmpty()) {
for (Map.Entry<String, GenericOrgaUnitTab> entry :
tabs.entrySet()) {
if (entry.getValue().hasData(orgaunit)) {
if (entry.getValue().hasData(orgaunit, state)) {
createAvailableTabElem(availableTabsElem,
entry.getKey(),
selected);
@ -92,8 +92,8 @@ public abstract class GenericOrgaUnitExtraXmlGenerator
System.currentTimeMillis()
- availableStart));
if (tabs.containsKey(selected) && tabs.get(selected).hasData(
orgaunit)) {
if (tabs.containsKey(selected)
&& tabs.get(selected).hasData(orgaunit, state)) {
final GenericOrgaUnitTab selectedTab = tabs.get(selected);
final Element selectedTabElem =
orgaUnitTabsElem.newChildElement(
@ -217,4 +217,5 @@ public abstract class GenericOrgaUnitExtraXmlGenerator
public void setListMode(final boolean listMode) {
this.listMode = listMode;
}
}

View File

@ -24,7 +24,9 @@ public abstract class GenericOrgaUnitMembersTab implements GenericOrgaUnitTab {
private final static Logger logger =
Logger.getLogger(GenericOrgaUnitMembersTab.class);
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
@Override
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
/*final long start = System.currentTimeMillis();
final boolean result = !getData(orgaunit).isEmpty();
logger.debug(String.format(
@ -101,8 +103,7 @@ public abstract class GenericOrgaUnitMembersTab implements GenericOrgaUnitTab {
final List<GenericPerson> persons = new LinkedList<GenericPerson>();
final GenericOrganizationalUnitPersonCollection personColl = orgaunit.
getPersons();
final GenericOrganizationalUnitPersonCollection personColl = orgaunit.getPersons();
if ((getRolesToInclude() != null) && !getRolesToInclude().isEmpty()) {
final StringBuffer roleFilter = new StringBuffer();
@ -150,8 +151,7 @@ public abstract class GenericOrgaUnitMembersTab implements GenericOrgaUnitTab {
final List<GenericPerson> persons,
final PageState state) {
final GenericOrganizationalUnitSubordinateCollection subOrgaUnits =
orgaunit.
getSubordinateOrgaUnits();
orgaunit.getSubordinateOrgaUnits();
final StringBuffer assocTypeFilter = new StringBuffer();
for (String assocType : getAssocTypesToMerge()) {
if (assocTypeFilter.length() > 0) {
@ -217,5 +217,6 @@ public abstract class GenericOrgaUnitMembersTab implements GenericOrgaUnitTab {
protected ContentItem getContentItem(final PageState state) {
return person;
}
}
}

View File

@ -21,7 +21,8 @@ public abstract class GenericOrgaUnitSubordinateTab
GenericOrgaUnitSubordinateTab.class);
@Override
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
return !getData(orgaunit).isEmpty();
}
@ -78,8 +79,7 @@ public abstract class GenericOrgaUnitSubordinateTab
protected GenericOrganizationalUnitSubordinateCollection getData(
final GenericOrganizationalUnit orgaunit) {
final GenericOrganizationalUnitSubordinateCollection subOrgaUnits =
orgaunit.
getSubordinateOrgaUnits();
orgaunit.getSubordinateOrgaUnits();
subOrgaUnits.addFilter(
String.format("%s = '%s'",
GenericOrganizationalUnitSubordinateCollection.LINK_ASSOCTYPE,
@ -149,5 +149,6 @@ public abstract class GenericOrgaUnitSubordinateTab
protected ContentItem getContentItem(final PageState state) {
return orgaunit;
}
}
}

View File

@ -15,10 +15,12 @@ public interface GenericOrgaUnitTab {
/**
*
* @param orgaunit
* @param state
* @return Returns true if the provided orgaunit has data to show in this
* tab, false otherwise.
*/
boolean hasData(GenericOrganizationalUnit orgaunit);
boolean hasData(GenericOrganizationalUnit orgaunit,
PageState state);
/**
* The implementation of this method creates the XML output for the tab.

View File

@ -97,10 +97,10 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
public TableModel makeModel(final Table table, final PageState state) {
table.getRowSelectionModel().clearSelection(state);
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
(GenericOrganizationalUnit) itemModel.getSelectedObject(state);
return new Model(table, state, orgaunit, customizer);
}
}
private class Model implements TableModel {
@ -124,8 +124,7 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
if ((customizer.getContentType() != null)
&& !(customizer.getContentType().isEmpty())) {
subordinateOrgaUnits.addFilter(String.format("objectType = '%s'",
customizer.
getContentType()));
customizer.getContentType()));
}
this.customizer = customizer;
}
@ -172,6 +171,7 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
GlobalizationHelper.getNegotiatedLocale().getLanguage()).
getID();
}
}
private class EditCellRenderer
@ -186,11 +186,8 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = CMS.
getSecurityManager(state);
final GenericOrganizationalUnit subordinateOrgaUnit =
new GenericOrganizationalUnit(
(BigDecimal) key);
final com.arsdigita.cms.SecurityManager securityManager = CMS.getSecurityManager(state);
final GenericOrganizationalUnit subordinateOrgaUnit = new GenericOrganizationalUnit((BigDecimal) key);
final boolean canEdit = securityManager.canAccess(
state.getRequest(),
@ -202,24 +199,18 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
getContentSection();
final ItemResolver resolver = section.getItemResolver();
final Link link =
new Link(
String.format("%s (%s)",
value.toString(),
subordinateOrgaUnit.getLanguage()),
new Link(value.toString(),
resolver.generateItemURL(state,
subordinateOrgaUnit,
section,
subordinateOrgaUnit.getVersion()));
return link;
} else {
final Label label = new Label(String.format(
"%s (%s)",
value.toString(),
subordinateOrgaUnit.getLanguage()));
final Label label = new Label(value.toString());
return label;
}
}
}
private class DeleteCellRenderer
@ -234,11 +225,9 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = CMS.
getSecurityManager(state);
final com.arsdigita.cms.SecurityManager securityManager = CMS.getSecurityManager(state);
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
(GenericOrganizationalUnit) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
@ -255,6 +244,7 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
return label;
}
}
}
private class UpCellRenderer
@ -278,6 +268,7 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
return link;
}
}
}
private class DownCellRenderer
@ -294,11 +285,9 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
final int column) {
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
(GenericOrganizationalUnit) itemModel.getSelectedObject(state);
final GenericOrganizationalUnitSubordinateCollection subOrgaUnits =
orgaunit.
getSubordinateOrgaUnits();
orgaunit.getSubordinateOrgaUnits();
if ((customizer.getAssocType() != null)
&& !(customizer.getAssocType().isEmpty())) {
subOrgaUnits.addFilter(String.format(
@ -321,6 +310,7 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
return link;
}
}
}
private class ActionListener implements TableActionListener {
@ -330,15 +320,13 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
final PageState state = event.getPageState();
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(
(GenericOrganizationalUnit) itemModel.getSelectedObject(
state);
final GenericOrganizationalUnit subOrgaUnit =
new GenericOrganizationalUnit(
new BigDecimal((String) event.getRowKey()));
final GenericOrganizationalUnitSubordinateCollection subOrgaUnits =
orgaunit.
getSubordinateOrgaUnits();
orgaunit.getSubordinateOrgaUnits();
final TableColumn column = getColumnModel().get(event.getColumn().
intValue());
@ -357,5 +345,6 @@ public class GenericOrganizationalUnitSubordinateOrgaUnitsTable
public void headSelected(TableActionEvent e) {
//Nothing now
}
}
}

View File

@ -22,8 +22,10 @@ import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitSuperiorCollectio
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.persistence.OID;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
/**
*
@ -88,10 +90,10 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
public TableModel makeModel(final Table table, final PageState state) {
table.getRowSelectionModel().clearSelection(state);
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
(GenericOrganizationalUnit) itemModel.getSelectedObject(state);
return new Model(table, state, orgaunit, customizer);
}
}
private class Model implements TableModel {
@ -110,14 +112,12 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
&& !(customizer.getAssocType().isEmpty())) {
superiorOrgaUnits.addFilter(String.format(
"link.assocType = '%s'",
customizer.
getAssocType()));
customizer.getAssocType()));
}
if ((customizer.getContentType() != null)
&& !(customizer.getContentType().isEmpty())) {
superiorOrgaUnits.addFilter(String.format("objectType = '%s'",
customizer.
getContentType()));
customizer.getContentType()));
}
this.customizer = customizer;
}
@ -156,8 +156,10 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
}
public Object getKeyAt(int columnIndex) {
return superiorOrgaUnits.getOID();
return superiorOrgaUnits.getGenericOrganizationalUnit(
GlobalizationHelper.getNegotiatedLocale().getLanguage()).getID();
}
}
private class EditCellRenderer
@ -171,12 +173,8 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = CMS.
getSecurityManager(state);
final GenericOrganizationalUnitBundle superiorOrgaUnitBundle =
(GenericOrganizationalUnitBundle) DomainObjectFactory.
newInstance((OID) key);
final GenericOrganizationalUnit superiorOrgaUnit = (GenericOrganizationalUnit) superiorOrgaUnitBundle.getPrimaryInstance();
final com.arsdigita.cms.SecurityManager securityManager = CMS.getSecurityManager(state);
final GenericOrganizationalUnit superiorOrgaUnit = new GenericOrganizationalUnit((BigDecimal) key);
final boolean canEdit = securityManager.canAccess(
state.getRequest(),
@ -187,23 +185,18 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
final ContentSection section = CMS.getContext().
getContentSection();
final ItemResolver resolver = section.getItemResolver();
final Link link = new Link(
String.format("%s",
value.toString(),
superiorOrgaUnit.getLanguage()),
final Link link = new Link(value.toString(),
resolver.generateItemURL(state,
superiorOrgaUnit,
section,
superiorOrgaUnit.getVersion()));
return link;
} else {
final Label label = new Label(String.format(
"%s (%s)",
value.toString(),
superiorOrgaUnit.getLanguage()));
final Label label = new Label(value.toString());
return label;
}
}
}
private class DeleteCellRenderer
@ -218,11 +211,9 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
final com.arsdigita.cms.SecurityManager securityManager = Utilities.getSecurityManager(state);
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
(GenericOrganizationalUnit) itemModel.getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
@ -239,6 +230,7 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
return label;
}
}
}
private class UpCellRenderer
@ -262,6 +254,7 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
return link;
}
}
}
private class DownCellRenderer
@ -278,11 +271,9 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
final int column) {
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
(GenericOrganizationalUnit) itemModel.getSelectedObject(state);
final GenericOrganizationalUnitSuperiorCollection supOrgaUnits =
orgaunit.
getSuperiorOrgaUnits();
orgaunit.getSuperiorOrgaUnits();
if ((supOrgaUnits.size() - 1) == row) {
final Label label = new Label("");
@ -293,6 +284,7 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
return link;
}
}
}
private class ActionListener implements TableActionListener {
@ -302,14 +294,11 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
final PageState state = event.getPageState();
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
final GenericOrganizationalUnit supOrgaUnit =
(GenericOrganizationalUnit) DomainObjectFactory.
newInstance(OID.valueOf((String) event.getRowKey()));
(GenericOrganizationalUnit) itemModel.getSelectedObject(state);
final GenericOrganizationalUnit supOrgaUnit = new GenericOrganizationalUnit(
new BigDecimal((String) event.getRowKey()));
final GenericOrganizationalUnitSuperiorCollection supOrgaUnits =
orgaunit.
getSuperiorOrgaUnits();
orgaunit.getSuperiorOrgaUnits();
final TableColumn column = getColumnModel().get(event.getColumn().
intValue());
@ -329,5 +318,6 @@ public class GenericOrganizationalUnitSuperiorOrgaUnitsTable extends Table {
public void headSelected(final TableActionEvent event) {
//Nothing now
}
}
}

View File

@ -90,6 +90,8 @@ public final class ConcurrentDict {
* <p>Note that the <code>null</code> key is always mapped to
* <code>null</code>.</p>
*
* @param key
* @return
* @see EntrySupplier#supply(Object)
* @see #ConcurrentDict(ConcurrentDict.EntrySupplier)
*

View File

@ -19,6 +19,9 @@
package com.redhat.persistence.common;
import com.arsdigita.util.ConcurrentDict;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* Path
@ -26,16 +29,14 @@ import com.arsdigita.util.ConcurrentDict;
* @author <a href="mailto:rhs@mit.edu">rhs@mit.edu</a>
* @version $Id: Path.java 287 2005-02-22 00:29:02Z sskracic $
**/
public class Path {
//special case the id path since it shows up so often
private static final Path ID_PATH = new Path("id");
private static final int NO_DOT = -1;
private static final ConcurrentDict DICT =
new ConcurrentDict(new Supplier());
private static final Map<String, Path> DICT2 = new HashMap<String, Path>();
private Path m_parent; // initialized lazily from m_path
private final String m_path;
private final int m_lastDot;
@ -45,36 +46,36 @@ public class Path {
m_lastDot = m_path.lastIndexOf('.');
}
public static final Path get(String path) {
public static Path get(String path) {
if ("id".equals(path)) {
return ID_PATH;
}
return (Path) DICT.get(path);
}
public static final Path add(String p1, String p2) {
public static Path add(String p1, String p2) {
return Path.get(concat(p1, p2));
}
public static final Path add(Path p1, String p2) {
return p1==null ? Path.get(p2) : Path.get(concat(p1.m_path, p2));
public static Path add(Path p1, String p2) {
return p1 == null ? Path.get(p2) : Path.get(concat(p1.getPath(), p2));
}
public static final Path add(String p1, Path p2) {
return p2==null ? Path.get(p1): Path.get(concat(p1, p2.m_path));
public static Path add(String p1, Path p2) {
return p2 == null ? Path.get(p1) : Path.get(concat(p1, p2.getPath()));
}
public static final Path add(Path p1, Path p2) {
public static Path add(Path p1, Path p2) {
if (p1 == null) {
return p2;
} else if (p2 == null) {
return p1;
} else {
return Path.get(concat(p1.m_path, p2.m_path));
return Path.get(concat(p1.getPath(), p2.getPath()));
}
}
public static final Path relative(Path base, Path descendent) {
public static Path relative(Path base, Path descendent) {
if (base == null) {
return descendent;
} else {
@ -132,6 +133,7 @@ public class Path {
return m_path;
}
@Override
public String toString() {
return m_path;
}
@ -142,15 +144,17 @@ public class Path {
} else if (s2 == null) {
return s1;
} else {
StringBuffer sb = new StringBuffer(s1.length() + s2.length() + 1);
StringBuilder sb = new StringBuilder(s1.length() + s2.length() + 1);
sb.append(s1).append(".").append(s2);
return sb.toString();
}
}
private static class Supplier implements ConcurrentDict.EntrySupplier {
public Object supply(Object key) {
return new Path((String) key);
}
}
}

View File

@ -803,7 +803,11 @@ public class PDL {
String[] paths = new String[] { pone.getName(),
ptwo.getName() };
for (int i = 0; i < paths.length; i++) {
//System.err.printf("Path.get(paths[i] contains path: %s\n", Path.get(paths[i]).getPath());
Mapping m = om.getMapping(Path.get(paths[i]));
//if (m == null) {
// System.err.println("m is null");
//}
if (m.getTable() != null) {
om.setTable(m.getTable());
break;

View File

@ -15,7 +15,9 @@ public class SciDepartmentDescTab implements GenericOrgaUnitTab {
public final Logger logger = Logger.getLogger(SciDepartmentDescTab.class);
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
@Override
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
final long start = System.currentTimeMillis();
boolean result;
final Desc desc = getData(orgaunit);
@ -96,5 +98,6 @@ public class SciDepartmentDescTab implements GenericOrgaUnitTab {
public void setDesc(final String desc) {
this.desc = desc;
}
}
}

View File

@ -3,8 +3,6 @@ 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.GenericOrganizationalUnitPersonCollection;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitSubordinateCollection;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciDepartment;
import com.arsdigita.cms.contenttypes.ui.panels.CompareFilter;
@ -12,15 +10,15 @@ import com.arsdigita.cms.contenttypes.ui.panels.Paginator;
import com.arsdigita.cms.contenttypes.ui.panels.TextFilter;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.globalization.Globalization;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.FilterFactory;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.xml.Element;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Filter;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
@ -39,13 +37,13 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
private static final String SURNAME_PARAM = "memberSurname";
private final CompareFilter statusFilter = new CompareFilter(
STATUS_PARAM,
"link.status",
"status",
false,
false,
false);
private final TextFilter surnameFilter =
new TextFilter(SURNAME_PARAM,
"name");
GenericPerson.SURNAME);
static {
config.load();
@ -61,18 +59,17 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
}
@Override
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
// if ((orgaunit.getPersons() != null)
// && orgaunit.getPersons().size() > 0) {
// return true;
// } else if (config.isMergingMembers()) {
// final DataQuery persons = getData(orgaunit);
// return persons.isEmpty();
// } else {
// return false;
// }
return !orgaunit.getPersons().isEmpty();
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
if ((orgaunit.getPersons() != null)
&& orgaunit.getPersons().size() > 0) {
return true;
} else if (config.isMergingMembers()) {
final DataQuery persons = getData(orgaunit, state);
return persons.isEmpty();
} else {
return false;
}
}
@Override
@ -80,9 +77,12 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
final Element parent,
final PageState state) {
final long start = System.currentTimeMillis();
List<GenericPerson> members = getMembers(orgaunit, state);
final DataQuery persons = getData(orgaunit, state);
final HttpServletRequest request = state.getRequest();
//applyStatusFilter(persons, request);
applySurnameFilter(persons, request);
final Element depMembersElem = parent.newChildElement(
"departmentMembers");
@ -90,8 +90,7 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
statusFilter.generateXml(filtersElem);
if (members.isEmpty()) {
//if (persons.isEmpty()) {
if ((persons == null) || persons.isEmpty()) {
if ((surnameFilter != null)
&& (surnameFilter.getFilter() != null)
&& !(surnameFilter.getFilter().trim().isEmpty())) {
@ -101,23 +100,8 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
return;
}
Collections.sort(members, new Comparator<GenericPerson>() {
public int compare(final GenericPerson person1,
final GenericPerson person2) {
String name1 = String.format("%s %s", person1.getSurname(),
person1.getGivenName());
String name2 = String.format("%s %s", person2.getSurname(),
person2.getGivenName());
return name1.compareTo(name2);
}
});
final Paginator paginator = new Paginator(request,
//(int) persons.size(),
members.size(),
(int) persons.size(),
config.getPageSize());
if ((paginator.getPageCount() > config.getEnableSearchLimit())
@ -126,13 +110,11 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
surnameFilter.generateXml(filtersElem);
}
paginator.applyLimits(persons);
paginator.generateXml(depMembersElem);
if (paginator.getEnd() < members.size()) {
members = members.subList(paginator.getBegin(), paginator.getEnd());
}
for (GenericPerson member : members) {
generateMemberXml(member,
while (persons.next()) {
generateMemberXml((BigDecimal) persons.get("id"),
depMembersElem,
state);
}
@ -143,65 +125,10 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
System.currentTimeMillis() - start));
}
protected List<GenericPerson> getMembers(
final GenericOrganizationalUnit orgaunit,
protected DataQuery getData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
final long start = System.currentTimeMillis();
final List<GenericPerson> members = new LinkedList<GenericPerson>();
final GenericOrganizationalUnitPersonCollection persons = orgaunit.
getPersons();
if (state != null) {
applyStatusFilter(persons, state.getRequest());
applySurnameFilter(persons, state.getRequest());
}
while (persons.next()) {
members.add(persons.getPerson());
}
if (config.isMergingMembers()) {
getMembersFromSubordinateOrgaUnits(orgaunit, members, state);
}
logger.debug(String.format(
"Got members of department '%s'"
+ "in '%d ms'. MergeMembers is set to '%b'.",
orgaunit.getName(),
System.currentTimeMillis() - start,
config.isMergingMembers()));
return members;
}
protected void getMembersFromSubordinateOrgaUnits(
final GenericOrganizationalUnit orgaunit,
final List<GenericPerson> members,
final PageState state) {
final GenericOrganizationalUnitSubordinateCollection subDeps = orgaunit.
getSubordinateOrgaUnits();
subDeps.addFilter(
"objecttype = 'com.arsdigita.cms.contenttypes.SciDepartment'");
while (subDeps.next()) {
getMembersFromSubordinateOrgaUnit(
subDeps.getGenericOrganizationalUnit(), members, state);
}
}
protected void getMembersFromSubordinateOrgaUnit(
final GenericOrganizationalUnit subOrgaUnit,
final List<GenericPerson> members,
final PageState state) {
final List<GenericPerson> subOrgaUnitMembers = getMembers(subOrgaUnit,
state);
members.addAll(subOrgaUnitMembers);
}
protected DataQuery getData(final GenericOrganizationalUnit orgaunit) {
final long start = System.currentTimeMillis();
if (!(orgaunit instanceof SciDepartment)) {
throw new IllegalArgumentException(String.format(
"This tab can only process instances of "
@ -210,7 +137,7 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
orgaunit.getClass().getName()));
}
final DataQuery personsQuery = SessionManager.getSession().
final DataQuery personBundlesQuery = SessionManager.getSession().
retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfMembersOfOrgaUnits");
final List<String> orgaUnitIds = new ArrayList<String>();
@ -220,7 +147,7 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
SessionManager.getSession().retrieveQuery(
"com.arsdigita.cms.contenttypes.getIdsOfSubordinateOrgaUnitsRecursivlyWithAssocType");
subDepartmentsQuery.setParameter("orgaunitId",
orgaunit.getID().toString());
orgaunit.getContentBundle().getID().toString());
subDepartmentsQuery.setParameter("assocType",
SciDepartmentSubDepartmentsStep.ASSOC_TYPE);
@ -228,13 +155,30 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
orgaUnitIds.add(subDepartmentsQuery.get("orgaunitId").toString());
}
} else {
orgaUnitIds.add(orgaunit.getID().toString());
orgaUnitIds.add(orgaunit.getContentBundle().getID().toString());
}
personsQuery.setParameter("orgaunitIds", orgaUnitIds);
personBundlesQuery.setParameter("orgaunitIds", orgaUnitIds);
applyStatusFilter(personBundlesQuery, state.getRequest());
personsQuery.addOrder(GenericPerson.SURNAME);
personsQuery.addOrder(GenericPerson.GIVENNAME);
final StringBuilder filterBuilder = new StringBuilder();
while (personBundlesQuery.next()) {
if (filterBuilder.length() > 0) {
filterBuilder.append(",");
}
filterBuilder.append(personBundlesQuery.get("memberId").toString());
}
final DataCollection membersQuery = SessionManager.getSession().retrieve(GenericPerson.BASE_DATA_OBJECT_TYPE);
if (filterBuilder.length() > 0) {
membersQuery.addFilter(String.format("parent.id in (%s)", filterBuilder.toString()));
} else {
//No member return null to indicate
return null;
}
membersQuery.addOrder(GenericPerson.SURNAME);
membersQuery.addOrder(GenericPerson.GIVENNAME);
logger.debug(String.format(
"Got members of department '%s'"
@ -242,7 +186,7 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
orgaunit.getName(),
System.currentTimeMillis() - start,
config.isMergingMembers()));
return personsQuery;
return membersQuery;
}
private void applyStatusFilter(final DataQuery persons,
@ -312,5 +256,6 @@ public class SciDepartmentMembersTab implements GenericOrgaUnitTab {
protected ContentItem getContentItem(final PageState state) {
return item;
}
}
}

View File

@ -68,7 +68,9 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab {
false);
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
@Override
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
final long start = System.currentTimeMillis();
final ContentTypeCollection types = ContentType.getAllContentTypes();
types.addFilter(
@ -265,8 +267,7 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab {
final Element parent,
final PageState state) {
final long start = System.currentTimeMillis();
final ContentPage project = (ContentPage) DomainObjectFactory.
newInstance(new OID(
final ContentPage project = (ContentPage) DomainObjectFactory.newInstance(new OID(
"com.arsdigita.cms.contenttypes.SciProject", projectId));
logger.debug(String.format("Got domain object for project '%s' "
+ "in %d ms.",
@ -301,5 +302,6 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab {
protected ContentItem getContentItem(final PageState state) {
return item;
}
}
}

View File

@ -67,7 +67,8 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab {
}
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
final long start = System.currentTimeMillis();
final ContentTypeCollection types = ContentType.getAllContentTypes();

View File

@ -32,7 +32,8 @@ public class SciDepartmentSummaryTab implements GenericOrgaUnitTab {
config.load();
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
//Some of the the data shown by this tab will ever be there
return true;
}

View File

@ -16,7 +16,8 @@ public class SciInstituteDescTab implements GenericOrgaUnitTab {
public final Logger logger = Logger.getLogger(SciInstituteDescTab.class);
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
final long start = System.currentTimeMillis();
boolean result;
final Desc desc = getData(orgaunit);

View File

@ -55,7 +55,8 @@ public class SciInstituteMembersTab implements GenericOrgaUnitTab {
}
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
if ((orgaunit.getPersons() != null)
&& orgaunit.getPersons().size() > 0) {
return true;

View File

@ -70,7 +70,8 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab {
false);
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
final long start = System.currentTimeMillis();
final ContentTypeCollection types = ContentType.getAllContentTypes();
types.addFilter(

View File

@ -77,7 +77,8 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab {
this.onlyWorkingPapers = onlyWorkingPapers;
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
final long start = System.currentTimeMillis();
final ContentTypeCollection types = ContentType.getAllContentTypes();

View File

@ -32,7 +32,8 @@ public class SciInstituteSummaryTab implements GenericOrgaUnitTab {
config.load();
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
//Some of the the data shown by this tab will ever be there
return true;
}

View File

@ -16,7 +16,8 @@ public class SciProjectDescTab implements GenericOrgaUnitTab {
public final Logger logger = Logger.getLogger(SciProjectDescTab.class);
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
final long start = System.currentTimeMillis();
boolean result;
final Desc desc = getData(orgaunit);

View File

@ -39,7 +39,8 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
config.load();
}
public boolean hasData(final GenericOrganizationalUnit orgaunit) {
public boolean hasData(final GenericOrganizationalUnit orgaunit,
final PageState state) {
//Some of the data shown by this tab will ever be there
return true;
}