001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.jetspeed.om.impl;
019:
020: import java.io.Serializable;
021: import java.util.ArrayList;
022: import java.util.Collection;
023: import java.util.Locale;
024:
025: import org.apache.commons.logging.Log;
026: import org.apache.commons.logging.LogFactory;
027: import org.apache.jetspeed.om.common.MutableDescription;
028: import org.apache.jetspeed.om.common.ParameterComposite;
029: import org.apache.jetspeed.util.HashCodeBuilder;
030: import org.apache.jetspeed.util.JetspeedLocale;
031: import org.apache.pluto.om.common.Description;
032: import org.apache.pluto.om.common.DescriptionSet;
033:
034: /**
035: * @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
036: */
037: public class ParameterImpl implements ParameterComposite, Serializable {
038:
039: private String name;
040: private String value;
041: private String description;
042:
043: protected long parameterId;
044:
045: protected long parentId;
046:
047: private Collection descriptions;
048: private DescriptionSetImpl descCollWrapper = new DescriptionSetImpl(
049: DescriptionImpl.TYPE_PARAMETER);
050:
051: private static final Log log = LogFactory
052: .getLog(ParameterImpl.class);
053:
054: /**
055: * @see org.apache.pluto.om.common.Parameter#getName()
056: */
057: public String getName() {
058: return name;
059: }
060:
061: /**
062: * @see org.apache.pluto.om.common.Parameter#getValue()
063: */
064: public String getValue() {
065: return value;
066: }
067:
068: /**
069: * @see org.apache.pluto.om.common.ParameterCtrl#setName(java.lang.String)
070: */
071: public void setName(String name) {
072: this .name = name;
073:
074: }
075:
076: /**
077: * @see org.apache.pluto.om.common.ParameterCtrl#setValue(java.lang.String)
078: */
079: public void setValue(String value) {
080: this .value = value;
081:
082: }
083:
084: /**
085: * @see java.lang.Object#equals(java.lang.Object)
086: */
087: public boolean equals(Object obj) {
088: if (obj != null && obj.getClass().equals(getClass())) {
089: ParameterImpl p = (ParameterImpl) obj;
090: boolean sameParent = (p.parentId == parentId);
091: boolean sameName = (name != null && p.getName() != null && name
092: .equals(p.getName()));
093: return sameParent && sameName;
094: }
095:
096: return false;
097:
098: }
099:
100: /**
101: * @see java.lang.Object#hashCode()
102: */
103: public int hashCode() {
104: HashCodeBuilder hash = new HashCodeBuilder(17, 77);
105: return hash.append(name).toHashCode();
106: }
107:
108: /**
109: * @see org.apache.pluto.om.common.Parameter#getDescription(java.util.Locale)
110: */
111: public Description getDescription(Locale arg0) {
112: if (descriptions != null) {
113: return new DescriptionSetImpl(descriptions).get(arg0);
114: }
115: return null;
116:
117: }
118:
119: /**
120: * @see org.apache.pluto.om.common.ParameterCtrl#setDescriptionSet(org.apache.pluto.om.common.DescriptionSet)
121: */
122: public void setDescriptionSet(DescriptionSet arg0) {
123: this .descriptions = ((DescriptionSetImpl) arg0)
124: .getInnerCollection();
125: }
126:
127: /**
128: * @see org.apache.jetspeed.om.common.ParameterComposite#addDescription(java.util.Locale, java.lang.String)
129: */
130: public void addDescription(Locale locale, String desc) {
131: if (descriptions == null) {
132: descriptions = new ArrayList();
133: }
134: descCollWrapper.setInnerCollection(descriptions);
135: try {
136: MutableDescription descObj = new ParameterDescriptionImpl();
137:
138: descObj.setLocale(locale);
139: descObj.setDescription(desc);
140: descCollWrapper.addDescription(descObj);
141: } catch (Exception e) {
142: String msg = "Unable to instantiate Description implementor, "
143: + e.toString();
144: log.error(msg, e);
145: throw new IllegalStateException(msg);
146: }
147:
148: }
149:
150: public void addDescription(Description desc) {
151: if (descriptions == null) {
152: descriptions = new ArrayList();
153: }
154:
155: descCollWrapper.setInnerCollection(descriptions);
156: descCollWrapper.addDescription(desc);
157: }
158:
159: /**
160: * Remove when Castor is mapped correctly
161: *
162: * @deprecated
163: * @param desc
164: */
165: public void setDescription(String desc) {
166: // System.out.println("Setting description..." + desc);
167: addDescription(JetspeedLocale.getDefaultLocale(), desc);
168: // System.out.println("Description Set " + desc);
169: }
170:
171: /**
172: * Remove when Castor is mapped correctly
173: * @deprecated
174: * @return
175: */
176: public String getDescription() {
177:
178: Description desc = getDescription(JetspeedLocale
179: .getDefaultLocale());
180:
181: if (desc != null) {
182: return desc.getDescription();
183: }
184:
185: return null;
186: }
187:
188: /**
189: * @see org.apache.jetspeed.om.common.ParameterComposite#getDescriptionSet()
190: */
191: public DescriptionSet getDescriptionSet() {
192: if (descriptions != null) {
193: descCollWrapper.setInnerCollection(descriptions);
194: }
195: return descCollWrapper;
196: }
197:
198: }
|