blob: 55af2f4304d70ee8c227c773ee5885366ecefeaf [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*************************************************************/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sun.star.wizards.common;
import com.sun.star.beans.PropertyAttribute;
import com.sun.star.beans.PropertyState;
import com.sun.star.beans.PropertyValue;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XInterface;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
/**
*
* @author frank.schoenheit@sun.com
*/
public class NamedValueCollection
{
final private HashMap< String, Object > m_values = new HashMap< String, Object >();
public NamedValueCollection()
{
}
public NamedValueCollection( final PropertyValue[] i_values )
{
for ( int i = 0; i < i_values.length; ++i )
m_values.put( i_values[i].Name, i_values[i].Value );
}
public final void put( final String i_name, final Object i_value )
{
m_values.put( i_name, i_value );
}
@SuppressWarnings("unchecked")
public final < T > T getOrDefault( final String i_key, final T i_default )
{
if ( m_values.containsKey( i_key ) )
{
final Object value = m_values.get( i_key );
try
{
return (T)value;
}
catch ( ClassCastException e ) { }
}
return i_default;
}
@SuppressWarnings("unchecked")
public final < T extends XInterface > T queryOrDefault( final String i_key, final T i_default, Class i_interfaceClass )
{
if ( m_values.containsKey( i_key ) )
{
final Object value = m_values.get( i_key );
return (T)UnoRuntime.queryInterface( i_interfaceClass, value );
}
return i_default;
}
public final boolean has( final String i_key )
{
return m_values.containsKey( i_key );
}
public final PropertyValue[] getPropertyValues()
{
PropertyValue[] values = new PropertyValue[ m_values.size() ];
Iterator< Entry< String, Object > > iter = m_values.entrySet().iterator();
int i = 0;
while ( iter.hasNext() )
{
Entry< String, Object > entry = iter.next();
values[i++] = new PropertyValue(
entry.getKey(),
0,
entry.getValue(),
PropertyState.DIRECT_VALUE
);
}
return values;
}
}