/* * Copyright 2000-2001,2004 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.om.profile.psml; // Java imports import java.util.Iterator; import java.util.Vector; import org.apache.jetspeed.om.SecurityReference; import org.apache.jetspeed.om.profile.Controller; import org.apache.jetspeed.om.profile.Entry; import org.apache.jetspeed.om.profile.Layout; import org.apache.jetspeed.om.profile.Portlets; import org.apache.jetspeed.om.profile.Reference; import org.apache.jetspeed.om.profile.Security; /** * Base simple bean-like implementation of the Portlets interface suitable for * Castor XML serialization. * * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a> */ public class PsmlPortlets extends PsmlIdentityElement implements Portlets, java.io.Serializable { private Controller controller = null; private Security security = null; private Vector portlets = new Vector(); private Vector entries = new Vector(); private Vector refs = new Vector(); /** Holds value of property securityRef. */ private SecurityReference securityRef = null; private Portlets parentPortlets; public PsmlPortlets() { } public Controller getController() { return this.controller; } public void setController(Controller controller) { this.controller = controller; } public void setSecurity(Security security) { this.security = security; } public Security getSecurity() { return this.security; } public Vector getEntries() { return this.entries; } public void setEntries(Vector entries) { this.entries = entries; } /** * Return a list of portlet. Portlets that where added via a reference, see * addReference(), are excluded. * * @return Vector of portlet */ public Vector getPortlets() { Vector v = new Vector(); for (int ix = 0; ix < this.portlets.size(); ix++) { Portlets p = (Portlets) this.portlets.get(ix); if (p instanceof Reference) { // Do not want to include portlets that where added via reference continue; } v.add(p); } return v; } public void setPortlets(Vector portlets) { this.portlets = portlets; } public Vector getReferences() { return this.refs; } public void addPortlets(PsmlPortlets p) { portlets.addElement(p); } public void addReference(PsmlReference ref) { this.refs.addElement(ref); portlets.addElement(ref); } public void addReference(Reference ref) throws java.lang.IndexOutOfBoundsException { this.refs.addElement(ref); portlets.addElement(ref); } public int getEntryCount() { return this.entries.size(); } public int getReferenceCount() { return this.refs.size(); } public int getPortletsCount() { return this.portlets.size(); } public Entry removeEntry(int index) { Object obj = entries.elementAt(index); entries.removeElementAt(index); return (Entry) obj; } public Portlets removePortlets(int index) { Object obj = portlets.elementAt(index); if (null == obj) { return (Portlets) obj; } portlets.removeElementAt(index); if (obj instanceof Reference) { refs.remove(obj); } return (Portlets) obj; } public Reference removeReference(int index) { Object obj = refs.elementAt(index); refs.removeElementAt(index); portlets.remove(obj); return (Reference) obj; } public Entry getEntry(int index) throws java.lang.IndexOutOfBoundsException { // -- check bounds for index if ((index < 0) || (index > entries.size())) { throw new IndexOutOfBoundsException(); } return (Entry) entries.elementAt(index); } public Portlets getPortlets(int index) throws java.lang.IndexOutOfBoundsException { // -- check bounds for index if ((index < 0) || (index > portlets.size())) { throw new IndexOutOfBoundsException(); } return (Portlets) portlets.elementAt(index); } public Reference getReference(int index) throws java.lang.IndexOutOfBoundsException { if ((index < 0) || (index > refs.size())) { throw new IndexOutOfBoundsException(); } return (Reference) refs.elementAt(index); } public Iterator getEntriesIterator() { return entries.iterator(); } public Iterator getPortletsIterator() { return portlets.iterator(); } public Iterator getReferenceIterator() { return refs.iterator(); } public void addEntry(Entry entry) throws java.lang.IndexOutOfBoundsException { entries.addElement(entry); } public void addPortlets(Portlets p) throws java.lang.IndexOutOfBoundsException { portlets.addElement(p); // STW make sure layout gets set int end = getEntryCount(); Layout layout = p.getLayout(); // if (layout != null) { // layout.setPosition(end); // layout.setSize(-1); // } // 理由等:レイアウトの指定がない場合に, // 新規レイアウトを追加可能にした. if (layout == null) { layout = new PsmlLayout(); layout.setPosition(end); layout.setSize(-1); p.setLayout(layout); } } public Entry[] getEntriesArray() { int size = entries.size(); Entry[] mArray = new Entry[size]; for (int index = 0; index < size; index++) { mArray[index] = (Entry) entries.elementAt(index); } return mArray; } public Portlets[] getPortletsArray() { int size = portlets.size(); Portlets[] mArray = new Portlets[size]; for (int index = 0; index < size; index++) { mArray[index] = (Portlets) portlets.elementAt(index); } return mArray; } public Reference[] getReferenceArray() { int size = refs.size(); Reference[] mArray = new Reference[size]; for (int index = 0; index < size; index++) { mArray[index] = (Reference) refs.elementAt(index); } return mArray; } /** * Getter for property securityRef. * * @return Value of property securityRef. */ public SecurityReference getSecurityRef() { return securityRef; } /** * Setter for property securityRef. * * @param securityRef * New value of property securityRef. */ public void setSecurityRef(SecurityReference securityRef) { this.securityRef = securityRef; } /** * Create a clone of this object */ public Object clone() throws java.lang.CloneNotSupportedException { Object cloned = super.clone(); ((PsmlPortlets) cloned).controller = ((this.controller == null) ? null : (Controller) this.controller.clone()); ((PsmlPortlets) cloned).security = ((this.security == null) ? null : (Security) this.security.clone()); if (this.portlets != null) { ((PsmlPortlets) cloned).portlets = new Vector(this.portlets.size()); Iterator it = this.portlets.iterator(); while (it.hasNext()) { ((PsmlPortlets) cloned).portlets.add(((Portlets) it.next()).clone()); } } if (this.entries != null) { ((PsmlPortlets) cloned).entries = new Vector(this.entries.size()); Iterator it = this.entries.iterator(); while (it.hasNext()) { ((PsmlPortlets) cloned).entries.add(((Entry) it.next()).clone()); } } if (this.refs != null) { ((PsmlPortlets) cloned).refs = new Vector(this.refs.size()); Iterator it = this.refs.iterator(); while (it.hasNext()) { ((PsmlPortlets) cloned).refs.add(((Reference) it.next()).clone()); } } ((PsmlPortlets) cloned).securityRef = ((this.securityRef == null) ? null : (SecurityReference) this.securityRef.clone()); return cloned; } // clone /** * Returns the parent. * * @return Portlets */ public Portlets getParentPortlets() { return parentPortlets; } /** * Sets the parent. * * @param parent * The parent to set */ public void setParentPortlets(Portlets parent) { this.parentPortlets = parent; } /** * @see org.apache.jetspeed.om.profile.IdentityElement#getSkin() */ // public Skin getSkin() // { // Skin useSkin = super.getSkin(); // if(useSkin == null && parentPortlets != null) // { // useSkin = parentPortlets.getSkin(); // } // // return useSkin; // } }