/*
* 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 org.apache.jena.enhanced.* ;
import org.apache.jena.graph.* ;
import org.apache.jena.rdf.model.* ;
import org.apache.jena.vocabulary.RDF ;
/** An implementation of Alt.
*/
public class AltImpl extends ContainerImpl implements Alt {
@SuppressWarnings("hiding")
final static public Implementation factory = new Implementation() {
@Override
public boolean canWrap( Node n, EnhGraph eg )
{ return true; }
@Override
public EnhNode wrap(Node n,EnhGraph eg) {
return new AltImpl(n,eg);
}
};
/** Creates new AltMem */
public AltImpl( ModelCom model )
{ super( model ); }
public AltImpl( String uri, ModelCom model ) {
super( uri, model );
}
public AltImpl( Resource r, ModelCom m ) {
super( r, m );
}
public AltImpl(Node n, EnhGraph g) {
super( n, g );
}
/** get the default statement, explode if there isn't one */
private Statement needDefaultStatement()
{
Statement stmt = getDefaultStatement();
if (stmt == null) throw new AltHasNoDefaultException( this );
return stmt;
}
@Override
public RDFNode getDefault() {
return needDefaultStatement().getObject();
}
@Override
public Resource getDefaultResource() {
return needDefaultStatement().getResource();
}
@Override
public Literal getDefaultLiteral() {
return needDefaultStatement().getLiteral();
}
@Override
public boolean getDefaultBoolean() {
return needDefaultStatement().getBoolean();
}
@Override
public byte getDefaultByte() {
return needDefaultStatement().getByte();
}
@Override
public short getDefaultShort() {
return needDefaultStatement().getShort();
}
@Override
public int getDefaultInt() {
return needDefaultStatement().getInt();
}
@Override
public long getDefaultLong() {
return needDefaultStatement().getLong();
}
@Override
public char getDefaultChar() {
return needDefaultStatement().getChar();
}
@Override
public float getDefaultFloat() {
return needDefaultStatement().getFloat();
}
@Override
public double getDefaultDouble() {
return needDefaultStatement().getDouble();
}
@Override
public String getDefaultString() {
return needDefaultStatement().getString();
}
@Override
public String getDefaultLanguage() {
return needDefaultStatement().getLanguage();
}
@Override
@Deprecated public Resource getDefaultResource(ResourceF f) {
return needDefaultStatement().getResource();
}
@Override
public Alt getDefaultAlt() {
return needDefaultStatement().getAlt();
}
@Override
public Bag getDefaultBag() {
return needDefaultStatement().getBag();
}
@Override
public Seq getDefaultSeq() {
return needDefaultStatement().getSeq();
}
@Override
public Alt setDefault(RDFNode o) {
Statement stmt = getDefaultStatement();
if (stmt != null) getModel().remove( stmt );
getModel().add( this, RDF.li(1), o );
return this;
}
@Override
public Alt setDefault(boolean o) {
return setDefault( String.valueOf( o ) );
}
@Override
public Alt setDefault(long o) {
return setDefault( String.valueOf( o ) );
}
@Override
public Alt setDefault(char o) {
return setDefault( String.valueOf( o ) );
}
@Override
public Alt setDefault(float o) {
return setDefault( String.valueOf( o ) );
}
@Override
public Alt setDefault(double o) {
return setDefault( String.valueOf( o ) );
}
@Override
public Alt setDefault(Object o) {
return setDefault( String.valueOf( o ) );
}
@Override
public Alt setDefault(String o) {
return setDefault( o, "" );
}
@Override
public Alt setDefault(String o, String l) {
return setDefault( new LiteralImpl( NodeFactory.createLiteral( o, l ), getModelCom()) );
}
protected Statement getDefaultStatement()
{
StmtIterator iter = getModel().listStatements( this, RDF.li(1), (RDFNode) null );
try { return iter.hasNext() ? iter.nextStatement() : null; }
finally { iter.close(); }
}
}