blob: 0c1fcfdd2d29ed7d41c13aa1c7c8785c0acfd4b9 [file] [log] [blame]
/*
* Copyright 2004,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.cocoon.portal.pluto.om.common;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.apache.pluto.om.common.Preference;
import org.apache.pluto.om.common.PreferenceCtrl;
import org.apache.pluto.util.StringUtils;
/**
*
*
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
*
* @version CVS $Id: PreferenceImpl.java,v 1.3 2004/03/05 13:02:15 bdelacretaz Exp $
*/
public class PreferenceImpl implements Preference, PreferenceCtrl, java.io.Serializable {
private final static String NULL_VALUE = "#*!0_NULL_0!*#";
private final static String NULL_ARRAYENTRY = "#*!1_NULL_1!*#";
private String name;
private ArrayList value;
private Boolean readOnly;
public PreferenceImpl()
{
}
// Preference implementation.
public String getName()
{
return name;
}
public Iterator getValues()
{
// replace the NULL_VALUE String by NULL
if (value.contains(NULL_VALUE)) {
return null;
}
ArrayList returnValue = new ArrayList(value.size());
returnValue.addAll(value);
// replace all NULL_ARRAYENTRY Strings by NULL
for (int i = 0; i < returnValue.size(); i++) {
if (NULL_ARRAYENTRY.equals(returnValue.get(i))) {
returnValue.set(i, null);
}
}
return returnValue.iterator();
}
public boolean isReadOnly()
{
if (readOnly == null) {
return false;
}
return readOnly.booleanValue();
}
public boolean isValueSet() {
return value != null;
}
// PreferenceCtrl implementation.
public void setName(String name)
{
this.name = name;
}
public void setValues(Collection _value)
{
if (this.value == null) {
this.value = new ArrayList();
} else {
this.value.clear();
}
List addValue = null;
// replace NULL by the NULL_VALUE String
if (_value == null) {
addValue = new ArrayList(1);
addValue.add(NULL_VALUE);
} else {
// replace all NULL by the NULL_ARRAYENTRY String
addValue = new ArrayList(_value.size());
addValue.addAll(_value);
for (int i=0;i<addValue.size();i++) {
if (addValue.get(i) == null) {
addValue.set(i, NULL_ARRAYENTRY);
}
}
}
this.value.addAll(addValue);
}
public void setReadOnly(String readOnly)
{
this.readOnly = new Boolean(readOnly);
}
// additional methods.
// internal methods only used by castor
public String getReadOnly()
{
if (readOnly == null) {
return Boolean.FALSE.toString();
}
return readOnly.toString();
}
public Collection getCastorValues()
{
return value;
}
public void setCastorValues(Collection _value)
{
if (value == null) {
value = new ArrayList();
} else {
value.clear();
}
value.addAll(_value);
}
protected Collection getClonedCastorValuesAsCollection()
{
List returnValue = new ArrayList(value.size());
Iterator iter = value.iterator();
while (iter.hasNext()) {
String value = (String) iter.next();
returnValue.add(value);
}
return returnValue;
}
public String toString()
{
return toString(0);
}
public String toString(int indent)
{
StringBuffer buffer = new StringBuffer(50);
StringUtils.newLine(buffer,indent);
buffer.append(getClass().toString());
buffer.append(": name='");
buffer.append(name);
buffer.append("', value='");
if (value == null) {
buffer.append("null");
} else {
StringUtils.newLine(buffer,indent);
buffer.append("{");
Iterator iterator = value.iterator();
if (iterator.hasNext()) {
StringUtils.newLine(buffer,indent);
buffer.append((String)iterator.next());
}
while (iterator.hasNext()) {
StringUtils.indent(buffer,indent+2);
buffer.append((String)iterator.next());
}
StringUtils.newLine(buffer,indent);
buffer.append("}");
}
buffer.append("', isReadOnly='");
buffer.append(isReadOnly());
buffer.append("'");
return buffer.toString();
}
}