/* * JacORB - a free Java ORB * * Copyright (C) 1999-2014 Gerald Brose / The JacORB Team. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.jacorb.collection; import org.omg.CosCollection.EmptyCollection; import org.omg.CosCollection.Iterator; import org.omg.CosCollection.IteratorPOATie; import org.omg.CosCollection.OperationsOperations; import org.omg.CosCollection.OrderedCollectionOperations; import org.omg.CosCollection.OrderedIterator; import org.omg.CosCollection.OrderedIteratorHelper; import org.omg.CosCollection.PositionInvalid; import org.omg.PortableServer.POA; class OrderedCollectionImpl extends CollectionImpl implements OrderedCollectionOperations { /* ========================================================================= */ OrderedCollectionImpl( OperationsOperations ops, POA poa, IteratorFactory iterator_factory ){ super( ops, poa, iterator_factory ); } /* ========================================================================= */ public synchronized void remove_element_at_position(int position) throws PositionInvalid { try { element_remove( position ); } catch ( EmptyCollection e ){ throw new PositionInvalid(); } } /* ------------------------------------------------------------------------- */ public synchronized void remove_first_element() throws EmptyCollection { try { remove_element_at_position(0); } catch ( PositionInvalid e ){ throw new EmptyCollection(); } } /* ------------------------------------------------------------------------- */ public synchronized void remove_last_element() throws EmptyCollection { int pos = data.size()-1; try { remove_element_at_position(pos); } catch ( PositionInvalid e ){ throw new EmptyCollection(); } } /* ------------------------------------------------------------------------- */ public synchronized boolean retrieve_element_at_position(int position, org.omg.CORBA.AnyHolder element) throws PositionInvalid { element.value = element_retrieve( position ); return true; } /* ------------------------------------------------------------------------- */ public synchronized boolean retrieve_first_element(org.omg.CORBA.AnyHolder element) throws EmptyCollection { try { return retrieve_element_at_position( 0, element ); } catch ( PositionInvalid e ){ throw new EmptyCollection(); } } /* ------------------------------------------------------------------------- */ public synchronized boolean retrieve_last_element(org.omg.CORBA.AnyHolder element) throws EmptyCollection { int pos = data.size()-1; try { return retrieve_element_at_position( pos, element ); } catch ( PositionInvalid e ){ throw new EmptyCollection(); } } /* ------------------------------------------------------------------------- */ public synchronized OrderedIterator create_ordered_iterator(boolean read_only, boolean reverse_iteration) { PositionalIteratorImpl iter = iterator_factory.create_iterator( this, read_only, reverse_iteration ); IteratorPOATie servant = new IteratorPOATie( iter ); try { OrderedIterator i = OrderedIteratorHelper.narrow( poa.servant_to_reference( servant )); iter.set_servant( servant ); return i; } catch ( Exception e ){ e.printStackTrace( System.out ); throw new org.omg.CORBA.INTERNAL(); } } /* ========================================================================= */ /* Overrided */ /* ========================================================================= */ public synchronized Iterator create_iterator(boolean read_only) { return create_ordered_iterator( read_only, false ); } }