You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2005/11/01 23:13:39 UTC
svn commit: r330134 [1/2] - in /portals/jetspeed-2/trunk:
components/page-manager/src/java/JETSPEED-INF/castor/
components/page-manager/src/java/JETSPEED-INF/ojb/
components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/
components/page-mana...
Author: rwatler
Date: Tue Nov 1 14:13:18 2005
New Revision: 330134
URL: http://svn.apache.org/viewcvs?rev=330134&view=rev
Log:
- simplify Fragment properties API and deprecate layout name in properties
- snapshot progress with DB PageManager implementation
Added:
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeAttributes.java (with props)
Removed:
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Property.java
Modified:
portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml
portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PropertyImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/AbstractPageManager.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/psml/CastorXmlPageManager.java
portals/jetspeed-2/trunk/components/page-manager/src/test/database-page-manager.xml
portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java
portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java
portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/om/folder/proxy/FolderProxy.java
portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/portalsite/view/SiteView.java
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java
portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/page/PageManager.java
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/ColumnLayout.java
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/PageManagerLayoutEventListener.java
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml Tue Nov 1 14:13:18 2005
@@ -109,7 +109,7 @@
<bind-xml name="fragment"/>
</field>
- <field name="properties"
+ <field name="propertiesList"
type="org.apache.jetspeed.om.page.psml.PropertyImpl" collection="vector">
<bind-xml name="property"/>
</field>
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml Tue Nov 1 14:13:18 2005
@@ -53,7 +53,7 @@
element-class-ref="org.apache.jetspeed.om.folder.impl.FolderImpl"
auto-retrieve="true"
auto-delete="object"
- auto-update="link"
+ auto-update="object"
proxy="true"
>
<inverse-foreignkey field-ref="parentId"/>
@@ -64,14 +64,14 @@
element-class-ref="org.apache.jetspeed.om.page.impl.PageImpl"
auto-retrieve="true"
auto-delete="object"
- auto-update="link"
+ auto-update="object"
proxy="true"
>
<inverse-foreignkey field-ref="parentId"/>
</collection-descriptor>
<field-descriptor
- name="path"
+ name="attributes::path"
column="PATH"
jdbc-type="VARCHAR"
/>
@@ -87,6 +87,54 @@
column="TITLE"
jdbc-type="VARCHAR"
/>
+
+ <field-descriptor
+ name="attributes::subsite"
+ column="SUBSITE"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="attributes::user"
+ column="USER_PRINCIPAL"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="attributes::role"
+ column="ROLE_PRINCIPAL"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="attributes::group"
+ column="GROUP_PRINCIPAL"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="attributes::mediatype"
+ column="MEDIATYPE"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="attributes::locale"
+ column="LOCALE"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="attributes::extendedAttributeName"
+ column="EXT_ATTR_NAME"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="attributes::extendedAttributeValue"
+ column="EXT_ATTR_VALUE"
+ jdbc-type="VARCHAR"
+ />
</class-descriptor>
<!-- Page mapping -->
@@ -133,7 +181,7 @@
</collection-descriptor>
<field-descriptor
- name="path"
+ name="attributes::path"
column="PATH"
jdbc-type="VARCHAR"
/>
@@ -169,44 +217,50 @@
/>
<field-descriptor
- name="subsite"
+ name="attributes::subsite"
column="SUBSITE"
jdbc-type="VARCHAR"
/>
<field-descriptor
- name="principal"
- column="PRINCIPAL"
+ name="attributes::user"
+ column="USER_PRINCIPAL"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="attributes::role"
+ column="ROLE_PRINCIPAL"
jdbc-type="VARCHAR"
/>
<field-descriptor
- name="principalType"
- column="PRINCIPAL_TYPE"
+ name="attributes::group"
+ column="GROUP_PRINCIPAL"
jdbc-type="VARCHAR"
/>
<field-descriptor
- name="mediatype"
+ name="attributes::mediatype"
column="MEDIATYPE"
jdbc-type="VARCHAR"
/>
<field-descriptor
- name="locale"
+ name="attributes::locale"
column="LOCALE"
jdbc-type="VARCHAR"
/>
<field-descriptor
- name="extendedLocatorName"
- column="EXT_LOCATOR_NAME"
+ name="attributes::extendedAttributeName"
+ column="EXT_ATTR_NAME"
jdbc-type="VARCHAR"
/>
<field-descriptor
- name="extendedLocatorValue"
- column="EXT_LOCATOR_VALUE"
+ name="attributes::extendedAttributeValue"
+ column="EXT_ATTR_VALUE"
jdbc-type="VARCHAR"
/>
</class-descriptor>
@@ -306,25 +360,25 @@
<field-descriptor
name="extendedPropertyName1"
- column="EXT_PROPERTY_NAME_1"
+ column="EXT_PROP_NAME_1"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="extendedPropertyValue1"
- column="EXT_PROPERTY_VALUE_1"
+ column="EXT_PROP_VALUE_1"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="extendedPropertyName2"
- column="EXT_PROPERTY_NAME_2"
+ column="EXT_PROP_NAME_2"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="extendedPropertyValue2"
- column="EXT_PROPERTY_VALUE_2"
+ column="EXT_PROP_VALUE_2"
jdbc-type="VARCHAR"
/>
</class-descriptor>
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java Tue Nov 1 14:13:18 2005
@@ -132,6 +132,15 @@
}
/* (non-Javadoc)
+ * @see org.apache.jetspeed.om.folder.Folder#isRootFolder()
+ */
+ public boolean isRootFolder()
+ {
+ // test using Node implementation
+ return super.isRootNode();
+ }
+
+ /* (non-Javadoc)
* @see org.apache.jetspeed.om.folder.Folder#getDefaultPage(boolean)
*/
public String getDefaultPage(boolean allowDefaulting)
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java Tue Nov 1 14:13:18 2005
@@ -104,6 +104,16 @@
/*
* (non-Javadoc)
*
+ * @see org.apache.jetspeed.om.folder.Folder#isRootFolder()
+ */
+ public boolean isRootFolder()
+ {
+ return getPath().equals(PATH_SEPARATOR);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#getDefaultPage(boolean)
*/
public String getDefaultPage(boolean allowDefaulting)
@@ -113,7 +123,7 @@
String defaultPage = metadata.getDefaultPage();
if(defaultPage == null)
{
- defaultPage = Folder.FALLBACK_DEFAULT_PAGE;
+ defaultPage = FALLBACK_DEFAULT_PAGE;
}
return getPage(defaultPage, false).getName();
}
@@ -130,12 +140,12 @@
}
else
{
- return Folder.PAGE_NOT_FOUND_PAGE;
+ return PAGE_NOT_FOUND_PAGE;
}
}
catch (NodeException e1)
{
- return Folder.PAGE_NOT_FOUND_PAGE;
+ return PAGE_NOT_FOUND_PAGE;
}
}
}
@@ -185,7 +195,7 @@
public NodeSet getFolders(boolean checkAccess) throws FolderNotFoundException, DocumentException
{
// get list of all folders
- NodeSet folders = getAllNodes().subset(Folder.FOLDER_TYPE);
+ NodeSet folders = getAllNodes().subset(FOLDER_TYPE);
// filter node set by access
if (checkAccess)
@@ -220,7 +230,7 @@
public Folder getFolder(String name, boolean checkAccess) throws FolderNotFoundException, DocumentException
{
// get folder
- Folder folder = (Folder) getAllNodes().subset(Folder.FOLDER_TYPE).get(name);
+ Folder folder = (Folder) getAllNodes().subset(FOLDER_TYPE).get(name);
if (folder == null)
{
throw new FolderNotFoundException("Jetspeed PSML folder not found: " + name);
@@ -813,15 +823,6 @@
return reservedType;
}
- private static final String RESERVED_FOLDER_PREFIX = "_";
- private static final String RESERVED_USER_FOLDER_NAME = "_user";
- private static final String RESERVED_ROLE_FOLDER_NAME = "_role";
- private static final String RESERVED_GROUP_FOLDER_NAME = "_group";
- private static final String RESERVED_SUBSITES_FOLDER_NAME = "__subsite-root";
- private static final String RESERVED_MEDIATYPE_FOLDER_NAME = "_mediatype";
- private static final String RESERVED_LANGUAGE_FOLDER_NAME = "_language";
- private static final String RESERVED_COUNTRY_FOLDER_NAME = "_country";
-
private void setReservedType()
{
String name = getName();
@@ -833,7 +834,7 @@
reservedType = RESERVED_FOLDER_ROLES;
else if (name.equals(RESERVED_GROUP_FOLDER_NAME))
reservedType = RESERVED_FOLDER_GROUPS;
- else if (name.equals(RESERVED_SUBSITES_FOLDER_NAME))
+ else if (name.equals(RESERVED_SUBSITE_FOLDER_NAME))
reservedType = RESERVED_FOLDER_SUBSITES;
else if (name.equals(RESERVED_MEDIATYPE_FOLDER_NAME))
reservedType = RESERVED_FOLDER_MEDIATYPE;
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java Tue Nov 1 14:13:18 2005
@@ -117,24 +117,6 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#addProperty(org.apache.jetspeed.om.page.Property)
- */
- public void addProperty(Property p)
- {
-
- fragment.addProperty(p);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#clearProperties(java.lang.String)
- */
- public void clearProperties(String layoutName)
- {
-
- fragment.clearProperties(layoutName);
- }
-
- /* (non-Javadoc)
* @see org.apache.jetspeed.om.page.Fragment#clone()
*/
public Object clone() throws CloneNotSupportedException
@@ -153,39 +135,39 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutProperties()
+ * @see org.apache.jetspeed.om.page.Fragment#getName()
*/
- public List getLayoutProperties()
+ public String getName()
{
- return fragment.getLayoutProperties();
+ return fragment.getName();
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getName()
+ * @see org.apache.jetspeed.om.page.Fragment#getProperties()
*/
- public String getName()
+ public Map getProperties()
{
-
- return fragment.getName();
+
+ return fragment.getProperties();
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getProperties(java.lang.String)
+ * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String)
*/
- public List getProperties(String layoutName)
+ public String getProperty(String propName)
{
- return fragment.getProperties(layoutName);
+ return fragment.getProperty(propName);
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getPropertyValue(java.lang.String, java.lang.String)
+ * @see org.apache.jetspeed.om.page.Fragment#getIntProperty(java.lang.String)
*/
- public String getPropertyValue(String layout, String propName)
+ public int getIntProperty(String propName)
{
- return fragment.getPropertyValue(layout, propName);
+ return fragment.getIntProperty(propName);
}
/* (non-Javadoc)
@@ -225,15 +207,6 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#removeProperty(org.apache.jetspeed.om.page.Property)
- */
- public void removeProperty(Property p)
- {
-
- fragment.removeProperty(p);
- }
-
- /* (non-Javadoc)
* @see org.apache.jetspeed.om.page.Fragment#setDecorator(java.lang.String)
*/
public void setDecorator(String decoratorName)
@@ -249,15 +222,6 @@
{
fragment.setName(name);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setPropertyValue(java.lang.String, java.lang.String, java.lang.String)
- */
- public void setPropertyValue(String layout, String propName, String value)
- {
-
- fragment.setPropertyValue(layout, propName, value);
}
/* (non-Javadoc)
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java Tue Nov 1 14:13:18 2005
@@ -16,10 +16,15 @@
package org.apache.jetspeed.om.page.impl;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.apache.jetspeed.om.page.Fragment;
-import org.apache.jetspeed.om.page.Property;
+import org.apache.ojb.broker.PersistenceBroker;
+import org.apache.ojb.broker.PersistenceBrokerAware;
+import org.apache.ojb.broker.PersistenceBrokerException;
/**
* FragmentImpl
@@ -27,7 +32,7 @@
* @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
* @version $Id$
*/
-public class FragmentImpl extends BaseElementImpl implements Fragment
+public class FragmentImpl extends BaseElementImpl implements Fragment, PersistenceBrokerAware
{
private List fragments;
private String type;
@@ -42,6 +47,8 @@
private String extendedPropertyName2;
private String extendedPropertyValue2;
+ private Map properties;
+
/* (non-Javadoc)
* @see org.apache.jetspeed.om.page.Fragment#getType()
*/
@@ -120,113 +127,254 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutProperties()
+ * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String,java.lang.String)
*/
- public List getLayoutProperties()
+ public String getProperty(String propName)
{
- return null; // NYI
+ if (properties != null)
+ {
+ return (String)properties.get(propName);
+ }
+ return null;
}
-
+
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getProperties(java.lang.String)
+ * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String,java.lang.String)
*/
- public List getProperties(String layoutName)
+ public int getIntProperty(String propName)
{
- return null; // NYI
+ if (properties != null)
+ {
+ String propValue = (String)properties.get(propName);
+ if (propValue != null)
+ {
+ return Integer.parseInt(propValue);
+ }
+ }
+ return -1;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#getProperties()
+ */
+ public Map getProperties()
+ {
+ // initialize and return writable properties map
+ if (properties == null)
+ {
+ properties = new HashMap(4);
+ }
+ return properties;
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getPropertyValue(java.lang.String,java.lang.String)
+ * @see org.apache.jetspeed.om.page.Fragment#getLayoutRow()
*/
- public String getPropertyValue(String layout, String propName)
+ public int getLayoutRow()
{
- return null; // NYI
+ // get standard int property
+ return getIntProperty(ROW_PROPERTY_NAME);
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getPropertyValue(java.lang.String,java.lang.String,java.lang.String)
+ * @see org.apache.jetspeed.om.page.Fragment#setLayoutRow(int)
*/
- public void setPropertyValue(String layout, String propName, String value)
+ public void setLayoutRow(int row)
{
- // NYI
+ // set standard int property
+ if (row >= 0)
+ {
+ getProperties().put(ROW_PROPERTY_NAME, String.valueOf(row));
+ }
+ else if (properties != null)
+ {
+ properties.remove(ROW_PROPERTY_NAME);
+ }
}
-
+
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#addProperty(org.apache.jetspeed.om.page.Property)
+ * @see org.apache.jetspeed.om.page.Fragment#getLayoutColumn()
*/
- public void addProperty(Property p)
+ public int getLayoutColumn()
{
- // NYI
+ // get standard int property
+ return getIntProperty(COLUMN_PROPERTY_NAME);
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#removeProperty(org.apache.jetspeed.om.page.Property)
+ * @see org.apache.jetspeed.om.page.Fragment#setLayoutColumn(int)
*/
- public void removeProperty(Property p)
+ public void setLayoutColumn(int column)
{
- // NYI
+ // set standard int property
+ if (column >= 0)
+ {
+ getProperties().put(COLUMN_PROPERTY_NAME, String.valueOf(column));
+ }
+ else if (properties != null)
+ {
+ properties.remove(COLUMN_PROPERTY_NAME);
+ }
}
-
+
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#clearProperties(java.lang.String)
+ * @see org.apache.jetspeed.om.page.Fragment#getLayoutSizes()
*/
- public void clearProperties(String layoutName)
+ public String getLayoutSizes()
{
- // NYI
+ // get standard string property
+ return getProperty(SIZES_PROPERTY_NAME);
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutWidths()
+ * @see org.apache.jetspeed.om.page.Fragment#setLayoutSizes(java.lang.String)
*/
- public int getLayoutRow()
+ public void setLayoutSizes(String sizes)
{
- return layoutRowProperty;
+ // set standard string property
+ if (sizes != null)
+ {
+ getProperties().put(SIZES_PROPERTY_NAME, sizes);
+ }
+ else if (properties != null)
+ {
+ properties.remove(SIZES_PROPERTY_NAME);
+ }
}
- public void setLayoutRow(int row)
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#isReference()
+ */
+ public boolean isReference()
{
- this.layoutRowProperty = row;
+ return false; // NYI
}
-
- public void setLayoutColumn(int column)
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#clone()
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ return null; // NYI
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeInsert(org.apache.ojb.broker.PersistenceBroker)
+ */
+ public void beforeInsert(PersistenceBroker broker) throws PersistenceBrokerException
{
- this.layoutColumnProperty = column;
+ // execute update hook
+ beforeUpdate(broker);
}
-
+
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutWidths()
+ * @see org.apache.ojb.broker.PersistenceBrokerAware#afterInsert(org.apache.ojb.broker.PersistenceBroker)
*/
- public int getLayoutColumn()
+ public void afterInsert(PersistenceBroker broker) throws PersistenceBrokerException
{
- return layoutColumnProperty;
+ // execute update hook
+ afterUpdate(broker);
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutSizes()
+ * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeUpdate(org.apache.ojb.broker.PersistenceBroker)
*/
- public String getLayoutSizes()
+ public void beforeUpdate(PersistenceBroker broker) throws PersistenceBrokerException
{
- return layoutSizesProperty;
+ // update concrete fields with properties
+ layoutRowProperty = -1;
+ layoutColumnProperty = -1;
+ layoutSizesProperty = null;
+ extendedPropertyName1 = null;
+ extendedPropertyValue1 = null;
+ extendedPropertyName2 = null;
+ extendedPropertyValue2 = null;
+ if ((properties != null) && !properties.isEmpty())
+ {
+ Iterator propsIter = properties.entrySet().iterator();
+ while (propsIter.hasNext())
+ {
+ Map.Entry prop = (Map.Entry)propsIter.next();
+ String propName = (String)prop.getKey();
+ String propValue = (String)prop.getValue();
+ if (propValue != null)
+ {
+ if (propName.equals(ROW_PROPERTY_NAME))
+ {
+ layoutRowProperty = Integer.parseInt(propValue);
+ }
+ else if (propName.equals(COLUMN_PROPERTY_NAME))
+ {
+ layoutColumnProperty = Integer.parseInt(propValue);
+ }
+ else if (propName.equals(SIZES_PROPERTY_NAME))
+ {
+ layoutSizesProperty = propValue;
+ }
+ else if (extendedPropertyName1 == null)
+ {
+ extendedPropertyName1 = propName;
+ extendedPropertyValue1 = propValue;
+ }
+ else if (extendedPropertyName2 == null)
+ {
+ extendedPropertyName2 = propName;
+ extendedPropertyValue2 = propValue;
+ }
+ }
+ }
+ }
}
- public void setLayoutSizes(String sizes)
+ /* (non-Javadoc)
+ * @see org.apache.ojb.broker.PersistenceBrokerAware#afterUpdate(org.apache.ojb.broker.PersistenceBroker)
+ */
+ public void afterUpdate(PersistenceBroker broker) throws PersistenceBrokerException
{
- this.layoutSizesProperty = sizes;
+ // nothing to do by default
}
-
+
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#isReference()
+ * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeDelete(org.apache.ojb.broker.PersistenceBroker)
*/
- public boolean isReference()
+ public void beforeDelete(PersistenceBroker broker) throws PersistenceBrokerException
{
- return false; // NYI
+ // nothing to do by default
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#clone()
+ * @see org.apache.ojb.broker.PersistenceBrokerAware#afterDelete(org.apache.ojb.broker.PersistenceBroker)
*/
- public Object clone() throws CloneNotSupportedException
+ public void afterDelete(PersistenceBroker broker) throws PersistenceBrokerException
{
- return null; // NYI
- }
+ // nothing to do by default
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.ojb.broker.PersistenceBrokerAware#afterLookup(org.apache.ojb.broker.PersistenceBroker)
+ */
+ public void afterLookup(PersistenceBroker broker) throws PersistenceBrokerException
+ {
+ // load properties from concrete fields
+ if (layoutRowProperty >= 0)
+ {
+ getProperties().put(ROW_PROPERTY_NAME, String.valueOf(layoutRowProperty));
+ }
+ if (layoutColumnProperty >= 0)
+ {
+ getProperties().put(COLUMN_PROPERTY_NAME, String.valueOf(layoutColumnProperty));
+ }
+ if (layoutSizesProperty != null)
+ {
+ getProperties().put(SIZES_PROPERTY_NAME, layoutSizesProperty);
+ }
+ if ((extendedPropertyName1 != null) && (extendedPropertyValue1 != null))
+ {
+ getProperties().put(extendedPropertyName1, extendedPropertyValue1);
+ }
+ if ((extendedPropertyName2 != null) && (extendedPropertyValue2 != null))
+ {
+ getProperties().put(extendedPropertyName2, extendedPropertyValue2);
+ }
+ }
}
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java Tue Nov 1 14:13:18 2005
@@ -37,13 +37,6 @@
private String skin;
private String decorator;
private String defaultFragmentDecorator;
- private String subsite;
- private String principal;
- private String principalType;
- private String mediatype;
- private String locale;
- private String extendedLocatorName;
- private String extendedLocatorValue;
/* (non-Javadoc)
* @see org.apache.jetspeed.om.page.Page#getDefaultSkin()
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java Tue Nov 1 14:13:18 2005
@@ -17,14 +17,15 @@
package org.apache.jetspeed.om.page.psml;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Vector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jetspeed.om.page.Fragment;
-import org.apache.jetspeed.om.page.Property;
/**
* @version $Id$
@@ -42,7 +43,9 @@
private List fragments = new Vector();
- private List properties = new Vector();
+ private List propertiesList = new Vector();
+
+ private Map propertiesMap = new HashMap();
private String name;
@@ -102,129 +105,38 @@
return this.fragments;
}
- public List getLayoutProperties()
- {
- List layouts = new ArrayList();
- Iterator i = this.properties.iterator();
-
- while (i.hasNext())
- {
- Property p = (Property) i.next();
- if (!layouts.contains(p.getLayout()))
- {
- layouts.add(p.getLayout());
- }
- }
-
- return layouts;
- }
-
- public List getProperties( String layoutName )
- {
- List props = new ArrayList();
- Iterator i = this.properties.iterator();
-
- if (layoutName == null)
- {
- layoutName = "";
- }
-
- while (i.hasNext())
- {
- Property p = (Property) i.next();
- if (layoutName.equals(p.getLayout()))
- {
- props.add(p);
- }
- }
-
- return props;
- }
-
- public String getPropertyValue( String layout, String propName )
+ public Vector getPropertiesList()
{
- Iterator itr = getProperties(layout).iterator();
- while (itr.hasNext())
- {
- Property aProp = (Property) itr.next();
- if (aProp.getName().equals(propName))
- {
- return aProp.getValue();
- }
- }
-
- return null;
+ return (Vector) this.propertiesList;
}
- public void setPropertyValue( String layout, String propName, String value )
- {
- Iterator itr = getProperties(layout).iterator();
- while (itr.hasNext())
- {
- Property aProp = (Property) itr.next();
- if (aProp.getName().equals(propName))
- {
- aProp.setValue(value);
- return;
- }
- }
-
- PropertyImpl newProp = new PropertyImpl();
- newProp.setLayout(layout);
- newProp.setName(propName);
- newProp.setValue(value);
- addProperty(newProp);
- }
-
- public void addProperty( Property p )
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String,java.lang.String)
+ */
+ public String getProperty(String propName)
{
- this.properties.add(p);
+ return (String)propertiesMap.get(propName);
}
- public void removeProperty( Property p )
- {
- Iterator i = this.properties.iterator();
-
- while (i.hasNext())
- {
- Property p2 = (Property) i.next();
-
- if (p2.equals(p))
- {
- i.remove();
- }
- }
- }
-
- public void clearProperties( String layoutName )
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String,java.lang.String)
+ */
+ public int getIntProperty(String propName)
{
- if (layoutName == null)
- {
- this.properties.clear();
- return;
- }
-
- Iterator i = this.properties.iterator();
-
- while (i.hasNext())
+ String prop = (String)propertiesMap.get(propName);
+ if (prop != null)
{
- Property p = (Property) i.next();
-
- if (layoutName.equals(p.getLayout()))
- {
- i.remove();
- }
+ return Integer.parseInt(prop);
}
+ return -1;
}
- public Vector getProperties()
- {
- return (Vector) this.properties;
- }
-
- public void setProperties( Vector props )
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#getProperties()
+ */
+ public Map getProperties()
{
- this.properties = props;
+ return propertiesMap;
}
/* (non-Javadoc)
@@ -232,30 +144,26 @@
*/
public int getLayoutRow()
{
- // return first valid row layout property
- Iterator i = this.properties.iterator();
- while (i.hasNext())
+ String prop = (String)propertiesMap.get(ROW_PROPERTY_NAME);
+ if (prop != null)
{
- Property p = (Property) i.next();
- if ((p.getLayout() != null) && (p.getLayout().length() > 0) && ROW_PROPERTY_NAME.equals(p.getName()) && (p.getValue() != null))
- {
- return p.getIntValue();
- }
+ return Integer.parseInt(prop);
}
return -1;
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#setLayoutRow(int)
+ */
public void setLayoutRow(int row)
{
- // return first valid sizes property
- Iterator i = this.properties.iterator();
- while (i.hasNext())
+ if (row >= 0)
{
- Property p = (Property) i.next();
- if (ROW_PROPERTY_NAME.equals(p.getName()))
- {
- p.setValue(String.valueOf(row));
- }
+ propertiesMap.put(ROW_PROPERTY_NAME, String.valueOf(row));
+ }
+ else
+ {
+ propertiesMap.remove(ROW_PROPERTY_NAME);
}
}
@@ -264,30 +172,26 @@
*/
public int getLayoutColumn()
{
- // return first valid column layout property
- Iterator i = this.properties.iterator();
- while (i.hasNext())
+ String prop = (String)propertiesMap.get(COLUMN_PROPERTY_NAME);
+ if (prop != null)
{
- Property p = (Property) i.next();
- if ((p.getLayout() != null) && (p.getLayout().length() > 0) && COLUMN_PROPERTY_NAME.equals(p.getName()) && (p.getValue() != null))
- {
- return p.getIntValue();
- }
+ return Integer.parseInt(prop);
}
return -1;
}
- public void setLayoutColumn(int size)
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#setLayoutColumn(int)
+ */
+ public void setLayoutColumn(int column)
{
- // return first valid sizes property
- Iterator i = this.properties.iterator();
- while (i.hasNext())
+ if (column >= 0)
{
- Property p = (Property) i.next();
- if (COLUMN_PROPERTY_NAME.equals(p.getName()))
- {
- p.setValue(String.valueOf(size));
- }
+ propertiesMap.put(COLUMN_PROPERTY_NAME, String.valueOf(column));
+ }
+ else
+ {
+ propertiesMap.remove(COLUMN_PROPERTY_NAME);
}
}
@@ -296,30 +200,21 @@
*/
public String getLayoutSizes()
{
- // return first valid sizes property
- Iterator i = this.properties.iterator();
- while (i.hasNext())
- {
- Property p = (Property) i.next();
- if (SIZES_PROPERTY_NAME.equals(p.getName()) && (p.getValue() != null))
- {
- return p.getValue();
- }
- }
- return null;
+ return (String)propertiesMap.get(SIZES_PROPERTY_NAME);
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#setLayoutSizes(java.lang.String)
+ */
public void setLayoutSizes(String sizes)
{
- // return first valid sizes property
- Iterator i = this.properties.iterator();
- while (i.hasNext())
+ if (sizes != null)
{
- Property p = (Property) i.next();
- if (SIZES_PROPERTY_NAME.equals(p.getName()))
- {
- p.setValue(sizes);
- }
+ propertiesMap.put(SIZES_PROPERTY_NAME, sizes);
+ }
+ else
+ {
+ propertiesMap.remove(SIZES_PROPERTY_NAME);
}
}
@@ -401,5 +296,76 @@
{
this.name = name;
+ }
+
+ /**
+ * unmarshalled - notification that this instance has been
+ * loaded from the persistent store
+ */
+ public void unmarshalled()
+ {
+ // notify super class implementation
+ super.unmarshalled();
+
+ // propagate unmarshalled notification
+ // to all fragments
+ Iterator fragmentIter = fragments.iterator();
+ while (fragmentIter.hasNext())
+ {
+ ((FragmentImpl)fragmentIter.next()).unmarshalled();
+ }
+
+ // load the properties map from list
+ propertiesMap.clear();
+ Iterator propsIter = propertiesList.iterator();
+ while (propsIter.hasNext())
+ {
+ PropertyImpl prop = (PropertyImpl) propsIter.next();
+ propertiesMap.put(prop.getName(), prop.getValue());
+ }
+ }
+
+ /**
+ * marshalling - notification that this instance is to
+ * be saved to the persistent store
+ */
+ public void marshalling()
+ {
+ // update the properties list from the map
+ // if change/edit detected
+ boolean changed = (propertiesMap.size() != propertiesList.size());
+ if (!changed)
+ {
+ Iterator propsIter = propertiesList.iterator();
+ while (!changed && propsIter.hasNext())
+ {
+ PropertyImpl prop = (PropertyImpl) propsIter.next();
+ changed = (prop.getValue() != propertiesMap.get(prop.getName()));
+ }
+ }
+ if (changed)
+ {
+ propertiesList.clear();
+ Iterator propsIter = propertiesMap.entrySet().iterator();
+ while (propsIter.hasNext())
+ {
+ Map.Entry prop = (Map.Entry) propsIter.next();
+ PropertyImpl listProp = new PropertyImpl();
+ listProp.setName((String)prop.getKey());
+ listProp.setValue((String)prop.getValue());
+ propertiesList.add(listProp);
+ }
+ }
+
+ // propagate marshalling notification
+ // to all fragments
+ Iterator fragmentIter = fragments.iterator();
+ while (fragmentIter.hasNext())
+ {
+ ((FragmentImpl)fragmentIter.next()).marshalling();
+ }
+
+ // notify super class implementation
+ super.marshalling();
}
}
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java Tue Nov 1 14:13:18 2005
@@ -234,6 +234,13 @@
}
}
+ // propagate unmarshalled notification
+ // to root fragment
+ if (root != null)
+ {
+ ((FragmentImpl)root).unmarshalled();
+ }
+
// default title of pages to name
if (getTitle() == null)
{
@@ -247,6 +254,13 @@
*/
public void marshalling()
{
+ // propagate marshalling notification
+ // to root fragment
+ if (root != null)
+ {
+ ((FragmentImpl)root).marshalling();
+ }
+
// propagate marshalling notification
// to all menu definitions
if (menuDefinitions != null)
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PropertyImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PropertyImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PropertyImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PropertyImpl.java Tue Nov 1 14:13:18 2005
@@ -16,8 +16,6 @@
package org.apache.jetspeed.om.page.psml;
-import org.apache.jetspeed.om.page.Property;
-
/**
* Bean like implementation of the Parameter interface suitable for
* Castor serialization.
@@ -26,12 +24,10 @@
* @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
* @version $Id$
*/
-public class PropertyImpl implements Property, java.io.Serializable
+public class PropertyImpl implements java.io.Serializable
{
-
private String name;
private String value;
- private String layout;
public PropertyImpl()
{
@@ -39,12 +35,13 @@
public String getLayout()
{
- return this.layout;
+ // property layout name deprecated
+ return null;
}
public void setLayout(String layout)
{
- this.layout = layout;
+ // property layout name deprecated
}
public String getName()
@@ -67,53 +64,12 @@
this.value = value;
}
-
- public boolean equals(Object object)
- {
- boolean isEqual = true;
-
- if (object instanceof Property)
- {
- if (this.name!=null)
- {
- isEqual&=this.name.equals(((Property)object).getName());
- }
- else
- {
- isEqual&=((Property)object).getName()==null;
- }
-
- if (this.value!=null)
- {
- isEqual&=this.value.equals(((Property)object).getValue());
- }
- else
- {
- isEqual&=((Property)object).getValue()==null;
- }
-
- if (this.layout!=null)
- {
- isEqual&=this.layout.equals(((Property)object).getLayout());
- }
- else
- {
- isEqual&=((Property)object).getLayout()==null;
- }
- }
- else
- {
- isEqual = false;
- }
-
- return isEqual;
- }
-
public Object clone()
throws java.lang.CloneNotSupportedException
{
return super.clone();
}
+
/**
* <p>
* getIntValue
@@ -126,4 +82,4 @@
{
return Integer.parseInt(value);
}
-}
\ No newline at end of file
+}
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/AbstractPageManager.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/AbstractPageManager.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/AbstractPageManager.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/AbstractPageManager.java Tue Nov 1 14:13:18 2005
@@ -36,7 +36,6 @@
import org.apache.jetspeed.om.page.Fragment;
import org.apache.jetspeed.om.page.Link;
import org.apache.jetspeed.om.page.Page;
-import org.apache.jetspeed.om.page.Property;
import org.apache.jetspeed.page.document.Node;
import org.apache.jetspeed.portalsite.MenuElement;
@@ -84,7 +83,6 @@
this.pageClass = (Class)modelClasses.get("PageImpl.class");
this.folderClass = (Class)modelClasses.get("FolderImpl.class");
this.linkClass = (Class)modelClasses.get("LinkImpl.class");
- this.propertyClass = (Class)modelClasses.get("PropertyImpl.class");
this.menuDefinitionClass = (Class)modelClasses.get("MenuDefinitionImpl.class");
this.menuExcludeDefinitionClass = (Class)modelClasses.get("MenuExcludeDefinitionImpl.class");
this.menuIncludeDefinitionClass = (Class)modelClasses.get("MenuIncludeDefinitionImpl.class");
@@ -240,26 +238,6 @@
return fragment;
}
- /* (non-Javadoc)
- * @see org.apache.jetspeed.page.PageManager#newProperty()
- */
- public Property newProperty()
- {
- Property property = null;
- try
- {
- property = (Property)createObject(this.propertyClass);
-
- }
- catch (ClassCastException e)
- {
- String message = "Failed to create fragment-property object for " + this.propertyClass;
- log.error(message, e);
- // throw new JetspeedException(message, e);
- }
- return property;
- }
-
/**
* newMenuDefinition - creates a new empty menu definition
*
@@ -516,20 +494,11 @@
clone.setState(source.getState());
// clone properties
- Iterator names = source.getLayoutProperties().iterator();
- while (names.hasNext())
+ Iterator props = source.getProperties().entrySet().iterator();
+ while (props.hasNext())
{
- String name = (String)names.next();
- Iterator props = source.getProperties(name).iterator();
- while (props.hasNext())
- {
- Property srcProp = (Property)props.next();
- Property dstProp = newProperty();
- dstProp.setLayout(name);
- dstProp.setName(srcProp.getName());
- dstProp.setValue(srcProp.getValue());
- clone.addProperty(dstProp);
- }
+ Map.Entry prop = (Map.Entry)props.next();
+ clone.getProperties().put(prop.getKey(), prop.getValue());
}
// clone security constraints
Added: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeAttributes.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeAttributes.java?rev=330134&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeAttributes.java (added)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeAttributes.java Tue Nov 1 14:13:18 2005
@@ -0,0 +1,376 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.page.document.impl;
+
+import java.util.StringTokenizer;
+
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.ojb.broker.query.Criteria;
+
+/**
+ * NodeAttributes
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class NodeAttributes
+{
+ private static final String NONE = "";
+
+ private String path = Folder.PATH_SEPARATOR;
+ private String subsite = NONE;
+ private String user = NONE;
+ private String role = NONE;
+ private String group = NONE;
+ private String mediatype = NONE;
+ private String locale = NONE;
+ private String extendedAttributeName = NONE;
+ private String extendedAttributeValue = NONE;
+
+ private String canonicalPath;
+
+ /**
+ * NodeAttributes
+ *
+ * Constructor used for Node nested member.
+ */
+ public NodeAttributes()
+ {
+ }
+
+ /**
+ * NodeAttributes
+ *
+ * Constructor used to generate Node queries.
+ *
+ * @param path canonical path
+ */
+ public NodeAttributes(String path)
+ {
+ setCanonicalPath(path);
+ }
+
+ /**
+ * getCanonicalPath
+ *
+ * Computed canonical path using attributes and base path.
+ *
+ * @retuns canonical path
+ */
+ public String getCanonicalPath()
+ {
+ // compute canonical path
+ if (canonicalPath == null)
+ {
+ // prepend attributes to path
+ StringBuffer newPath = new StringBuffer();
+ if ((subsite != NONE) && (subsite.length() > 0))
+ {
+ newPath.append(Folder.SUBSITE_FOLDER);
+ newPath.append(subsite.toLowerCase());
+ }
+ if ((user != NONE) && (user.length() > 0))
+ {
+ newPath.append(Folder.USER_FOLDER);
+ newPath.append(user.toLowerCase());
+ }
+ if ((role != NONE) && (role.length() > 0))
+ {
+ newPath.append(Folder.ROLE_FOLDER);
+ newPath.append(role.toLowerCase());
+ }
+ if ((group != NONE) && (group.length() > 0))
+ {
+ newPath.append(Folder.GROUP_FOLDER);
+ newPath.append(group.toLowerCase());
+ }
+ if ((mediatype != NONE) && (mediatype.length() > 0))
+ {
+ newPath.append(Folder.MEDIATYPE_FOLDER);
+ newPath.append(mediatype.toLowerCase());
+ }
+ if ((locale != NONE) && (locale.length() > 0))
+ {
+ newPath.append(Folder.LANGUAGE_FOLDER);
+ int localeSeparatorIndex = locale.indexOf('_');
+ if (localeSeparatorIndex > 0)
+ {
+ newPath.append(locale.substring(0,localeSeparatorIndex).toLowerCase());
+ if (localeSeparatorIndex + 1 < locale.length())
+ {
+ newPath.append(Folder.COUNTRY_FOLDER);
+ newPath.append(locale.substring(localeSeparatorIndex+1).toLowerCase());
+ }
+ }
+ else
+ {
+ newPath.append(locale.toLowerCase());
+ }
+ }
+ if ((extendedAttributeName != NONE) && (extendedAttributeName.length() > 0) &&
+ (extendedAttributeValue != NONE) && (extendedAttributeValue.length() > 0))
+ {
+ newPath.append(Folder.PATH_SEPARATOR);
+ newPath.append(Folder.RESERVED_FOLDER_PREFIX);
+ newPath.append(extendedAttributeName.toLowerCase());
+ newPath.append(Folder.PATH_SEPARATOR);
+ newPath.append(extendedAttributeValue.toLowerCase());
+ }
+
+ // append base path
+ if (!path.equals(Folder.PATH_SEPARATOR))
+ {
+ newPath.append(path);
+ }
+
+ // save canonical path
+ if (newPath.length() > 0)
+ {
+ canonicalPath = newPath.toString();
+ }
+ else
+ {
+ canonicalPath = Folder.PATH_SEPARATOR;
+ }
+ }
+ return canonicalPath;
+ }
+
+ /**
+ * setCanonicalPath
+ *
+ * Parses canonical path setting attributes and base path.
+ *
+ * @param newPath canonical path
+ */
+ public void setCanonicalPath(String newPath)
+ {
+ // cleanup path
+ if ((newPath == null) || (newPath.length() == 0))
+ {
+ newPath = Folder.PATH_SEPARATOR;
+ }
+ if (!newPath.startsWith(Folder.PATH_SEPARATOR))
+ {
+ newPath = Folder.PATH_SEPARATOR + newPath;
+ }
+ if (newPath.endsWith(Folder.PATH_SEPARATOR) && !newPath.equals(Folder.PATH_SEPARATOR))
+ {
+ newPath = newPath.substring(0, newPath.length() - 1);
+ }
+
+ // reset attributes and base path
+ path = Folder.PATH_SEPARATOR;
+ subsite = NONE;
+ user = NONE;
+ role = NONE;
+ group = NONE;
+ mediatype = NONE;
+ locale = NONE;
+ extendedAttributeName = NONE;
+ extendedAttributeValue = NONE;
+
+ // parse attributes and base path from path
+ StringBuffer basePath = new StringBuffer();
+ String attributeName = null;
+ StringTokenizer pathElements = new StringTokenizer(newPath, Folder.PATH_SEPARATOR);
+ while (pathElements.hasMoreTokens())
+ {
+ String pathElement = pathElements.nextToken();
+ if (attributeName != null)
+ {
+ // set last attribute name with attribute value
+ if (attributeName.startsWith(Folder.RESERVED_USER_FOLDER_NAME))
+ {
+ user = pathElement.toLowerCase();
+ }
+ else if (attributeName.startsWith(Folder.RESERVED_ROLE_FOLDER_NAME))
+ {
+ role = pathElement.toLowerCase();
+ }
+ else if (attributeName.startsWith(Folder.RESERVED_GROUP_FOLDER_NAME))
+ {
+ group = pathElement.toLowerCase();
+ }
+ else if (attributeName.startsWith(Folder.RESERVED_MEDIATYPE_FOLDER_NAME))
+ {
+ mediatype = pathElement.toLowerCase();
+ }
+ else if (attributeName.startsWith(Folder.RESERVED_LANGUAGE_FOLDER_NAME))
+ {
+ if (locale != NONE)
+ {
+ locale = pathElement.toLowerCase() + "_" + locale;
+ }
+ else
+ {
+ locale = pathElement.toLowerCase();
+ }
+ }
+ else if (attributeName.startsWith(Folder.RESERVED_COUNTRY_FOLDER_NAME))
+ {
+ if (locale != NONE)
+ {
+ locale = locale + "_" + pathElement.toLowerCase() ;
+ }
+ else
+ {
+ locale = pathElement.toLowerCase();
+ }
+ }
+ else if (attributeName.startsWith(Folder.RESERVED_SUBSITE_FOLDER_PREFIX))
+ {
+ subsite = pathElement.toLowerCase();
+ }
+ else if (attributeName.startsWith(Folder.RESERVED_FOLDER_PREFIX))
+ {
+ extendedAttributeName = attributeName.substring(1);
+ extendedAttributeValue = pathElement.toLowerCase();
+ }
+
+ // reset attribute name
+ attributeName = null;
+ }
+ else if (pathElement.startsWith(Folder.RESERVED_FOLDER_PREFIX) || pathElement.startsWith(Folder.RESERVED_SUBSITE_FOLDER_PREFIX))
+ {
+ // save attribute name
+ attributeName = pathElement.toLowerCase();
+ }
+ else
+ {
+ // append element to base path
+ basePath.append(Folder.PATH_SEPARATOR);
+ basePath.append(pathElement);
+ }
+ }
+
+ // set base path
+ if (basePath.length() > 0)
+ {
+ path = basePath.toString();
+ }
+
+ // reset canonical path
+ canonicalPath = null;
+ }
+
+ /**
+ * getPath
+ *
+ * @retuns base path
+ */
+ public String getPath()
+ {
+ return path;
+ }
+
+ /**
+ * setPath
+ *
+ * @param basePath base path
+ */
+ public void setPath(String basePath)
+ {
+ // cleanup path
+ if ((basePath == null) || (basePath.length() == 0))
+ {
+ basePath = Folder.PATH_SEPARATOR;
+ }
+ if (!basePath.startsWith(Folder.PATH_SEPARATOR))
+ {
+ basePath = Folder.PATH_SEPARATOR + basePath;
+ }
+ if (basePath.endsWith(Folder.PATH_SEPARATOR) && !basePath.equals(Folder.PATH_SEPARATOR))
+ {
+ basePath = basePath.substring(0, basePath.length() - 1);
+ }
+
+ // set path
+ path = basePath;
+ }
+
+ /**
+ * newQueryCriteria
+ *
+ * Construct query Criteria for Node with matching attributes.
+ */
+ public Criteria newQueryCriteria()
+ {
+ // construct filter for base path and attributes
+ Criteria filter = new Criteria();
+ filter.addEqualTo("attributes::path", path);
+ if ((subsite != NONE) && (subsite.length() > 0))
+ {
+ filter.addEqualTo("attributes::subsite", subsite);
+ }
+ else
+ {
+ filter.addEqualTo("attributes::subsite", NONE);
+ }
+ if ((user != NONE) && (user.length() > 0))
+ {
+ filter.addEqualTo("attributes::user", user);
+ }
+ else
+ {
+ filter.addEqualTo("attributes::user", NONE);
+ }
+ if ((role != NONE) && (role.length() > 0))
+ {
+ filter.addEqualTo("attributes::role", role);
+ }
+ else
+ {
+ filter.addEqualTo("attributes::role", NONE);
+ }
+ if ((group != NONE) && (group.length() > 0))
+ {
+ filter.addEqualTo("attributes::group", group);
+ }
+ else
+ {
+ filter.addEqualTo("attributes::group", NONE);
+ }
+ if ((mediatype != NONE) && (mediatype.length() > 0))
+ {
+ filter.addEqualTo("attributes::mediatype", mediatype);
+ }
+ else
+ {
+ filter.addEqualTo("attributes::mediatype", NONE);
+ }
+ if ((locale != NONE) && (locale.length() > 0))
+ {
+ filter.addEqualTo("attributes::locale", locale);
+ }
+ else
+ {
+ filter.addEqualTo("attributes::locale", NONE);
+ }
+ if ((extendedAttributeName != NONE) && (extendedAttributeName.length() > 0) &&
+ (extendedAttributeValue != NONE) && (extendedAttributeValue.length() > 0))
+ {
+ filter.addEqualTo("attributes::extendedAttributeName", extendedAttributeName);
+ filter.addEqualTo("attributes::extendedAttributeValue", extendedAttributeValue);
+ }
+ else
+ {
+ filter.addEqualTo("attributes::extendedAttributeName", NONE);
+ filter.addEqualTo("attributes::extendedAttributeValue", NONE);
+ }
+ return filter;
+ }
+}
Propchange: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeAttributes.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeImpl.java Tue Nov 1 14:13:18 2005
@@ -31,29 +31,75 @@
public abstract class NodeImpl extends BaseElementImpl implements Node
{
private Node parent;
- private String path;
+ private NodeAttributes attributes;
+
+ public NodeImpl()
+ {
+ super();
+ attributes = new NodeAttributes();
+ }
/**
- * setName
+ * isRootNode
*
- * @param name element name
+ * Test whether node attributes base path is a root node
+ * path, regardless of parent setting.
+ *
+ * @return root node flag
+ */
+ public boolean isRootNode()
+ {
+ return attributes.getPath().equals(Folder.PATH_SEPARATOR);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getName()
+ */
+ public String getName()
+ {
+ // get name or compute from path
+ String name = super.getName();
+ if (name == null)
+ {
+ String path = attributes.getPath();
+ if (path != null)
+ {
+ if (!path.equals(Folder.PATH_SEPARATOR))
+ {
+ name = path.substring(path.lastIndexOf(Folder.PATH_SEPARATOR) + 1);
+ }
+ else
+ {
+ name = Folder.PATH_SEPARATOR;
+ }
+ super.setName(name);
+ }
+
+ }
+ return name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#setName(java.lang.String)
*/
public void setName(String name)
{
// set path based on name
if (name != null)
{
+ String path = attributes.getPath();
if (path != null)
{
if (!name.equals(Folder.PATH_SEPARATOR))
{
- path = path.substring(0, path.lastIndexOf(Folder.PATH_SEPARATOR) + 1) + name;
+ attributes.setPath(path.substring(0, path.lastIndexOf(Folder.PATH_SEPARATOR) + 1) + name);
}
else
{
- path = Folder.PATH_SEPARATOR;
+ attributes.setPath(Folder.PATH_SEPARATOR);
}
}
+
super.setName(name);
}
}
@@ -73,6 +119,20 @@
{
// cast to check type
this.parent = (NodeImpl)parent;
+
+ // update path if required
+ if (parent != null)
+ {
+ String parentPath = parent.getPath();
+ String path = getPath();
+ if ((parentPath.equals(Folder.PATH_SEPARATOR) &&
+ (path.lastIndexOf(Folder.PATH_SEPARATOR) > 0)) ||
+ (!parentPath.equals(Folder.PATH_SEPARATOR) &&
+ !parentPath.equals(path.substring(0, path.lastIndexOf(Folder.PATH_SEPARATOR)))))
+ {
+ setPath(parentPath + Folder.PATH_SEPARATOR + getName());
+ }
+ }
}
/* (non-Javadoc)
@@ -80,7 +140,8 @@
*/
public String getPath()
{
- return path;
+ // return path from attributes and base path
+ return attributes.getCanonicalPath();
}
/* (non-Javadoc)
@@ -88,22 +149,11 @@
*/
public void setPath(String path)
{
- // cleanup paths
- if ((path == null) || (path.length() == 0))
- {
- path = Folder.PATH_SEPARATOR;
- }
- if (!path.startsWith(Folder.PATH_SEPARATOR))
- {
- path = Folder.PATH_SEPARATOR + path;
- }
- if (path.endsWith(Folder.PATH_SEPARATOR) && !path.equals(Folder.PATH_SEPARATOR))
- {
- path = path.substring(0, path.length() - 1);
- }
- this.path = path;
+ // set attributes and base path
+ attributes.setCanonicalPath(path);
// set name based on path
+ path = attributes.getPath();
if (!path.equals(Folder.PATH_SEPARATOR))
{
super.setName(path.substring(path.lastIndexOf(Folder.PATH_SEPARATOR) + 1));
@@ -111,6 +161,19 @@
else
{
super.setName(Folder.PATH_SEPARATOR);
+ }
+
+ // reset parent if required
+ if (parent != null)
+ {
+ String parentPath = parent.getPath();
+ if ((parentPath.equals(Folder.PATH_SEPARATOR) &&
+ (path.lastIndexOf(Folder.PATH_SEPARATOR) > 0)) ||
+ (!parentPath.equals(Folder.PATH_SEPARATOR) &&
+ !parentPath.equals(path.substring(0, path.lastIndexOf(Folder.PATH_SEPARATOR)))))
+ {
+ setParent(null);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org