/*
* 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.
*/
package org.apache.jena.rdf.model.impl;
import java.util.*;
import org.apache.jena.graph.* ;
import org.apache.jena.rdf.model.* ;
/**
Adapter class that converts a ModelChangedListener into a GraphListener.
The only tricky bit is that we have to implement equality as equality of the
underlying ModelChangedListeners/ModelCom pairs.
<p>
This implementation only works for <code>ModelCom</code> models,
because it relies on various service methods; this gives the model the
opportunity to cache various mappings for efficiency.
*/
public class ModelListenerAdapter implements GraphListener
{
protected ModelCom m;
protected ModelChangedListener L;
public ModelListenerAdapter( ModelCom m, ModelChangedListener L )
{ this.m = m; this.L = L; }
@Override
public void notifyAddArray( Graph graph, Triple [] triples )
{ L.addedStatements( m.asStatements( triples ) ); }
@Override
public void notifyDeleteArray( Graph g, Triple [] triples )
{ L.removedStatements( m.asStatements( triples ) ); }
@Override
public void notifyAddTriple( Graph g, Triple t )
{ L.addedStatement( m.asStatement( t ) ); }
@Override
public void notifyAddList( Graph g, List<Triple> triples )
{ L.addedStatements( m.asStatements( triples ) ); }
@Override
public void notifyAddIterator( Graph g, Iterator<Triple> it )
{ L.addedStatements( m.asStatements( it ) ); }
@Override
public void notifyAddGraph( Graph g, Graph added )
{ L.addedStatements( m.asModel( added ) ); }
@Override
public void notifyDeleteIterator( Graph g, Iterator<Triple> it )
{ L.removedStatements( m.asStatements( it ) ); }
@Override
public void notifyDeleteTriple( Graph g, Triple t )
{ L.removedStatement( m.asStatement( t ) ); }
public void notifyAddIterator( Graph g, List<Triple> triples )
{ L.addedStatements( m.asStatements( triples ) ); }
@Override
public void notifyDeleteList( Graph g, List<Triple> triples )
{ L.removedStatements( m.asStatements( triples ) ); }
@Override
public void notifyDeleteGraph( Graph g, Graph removed )
{ L.removedStatements( m.asModel( removed ) ); }
@Override
public void notifyEvent( Graph g, Object event )
{ L.notifyEvent( m, event ); }
@Override
public boolean equals( Object other )
{
return
other instanceof ModelListenerAdapter
&& ((ModelListenerAdapter) other).sameAs( this )
;
}
public boolean sameAs( ModelListenerAdapter other )
{ return this.L.equals( other.L ) && this.m.equals( other.m ); }
}