001: /*
002: * (c) Copyright 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms, with or without
006: * modification, are permitted provided that the following conditions
007: * are met:
008: * 1. Redistributions of source code must retain the above copyright
009: * notice, this list of conditions and the following disclaimer.
010: * 2. Redistributions in binary form must reproduce the above copyright
011: * notice, this list of conditions and the following disclaimer in the
012: * documentation and/or other materials provided with the distribution.
013: * 3. The name of the author may not be used to endorse or promote products
014: * derived from this software without specific prior written permission.
015:
016: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
017: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
018: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
019: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
020: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
021: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
022: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
023: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
024: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
025: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
026: *
027: * AltImpl.java
028: *
029: * Created on 08 August 2000, 16:39
030: */
031:
032: package com.hp.hpl.jena.rdf.model.impl;
033:
034: import com.hp.hpl.jena.rdf.model.*;
035: import com.hp.hpl.jena.vocabulary.RDF;
036: import com.hp.hpl.jena.graph.*;
037: import com.hp.hpl.jena.enhanced.*;
038:
039: /** An implementation of Alt.
040: *
041: * @author bwm
042: * @version Release='$Name: $' Revision='$Revision: 1.18 $' Date='$Date: 2008/01/02 12:04:57 $'
043: */
044: public class AltImpl extends ContainerImpl implements Alt {
045:
046: final static public Implementation factory = new Implementation() {
047: public boolean canWrap(Node n, EnhGraph eg) {
048: return true;
049: }
050:
051: public EnhNode wrap(Node n, EnhGraph eg) {
052: return new AltImpl(n, eg);
053: }
054: };
055:
056: /** Creates new AltMem */
057: public AltImpl(ModelCom model) {
058: super (model);
059: }
060:
061: public AltImpl(String uri, ModelCom model) {
062: super (uri, model);
063: }
064:
065: public AltImpl(Resource r, ModelCom m) {
066: super (r, m);
067: }
068:
069: public AltImpl(Node n, EnhGraph g) {
070: super (n, g);
071: }
072:
073: /** get the default statement, explode if there isn't one */
074:
075: private Statement needDefaultStatement() {
076: Statement stmt = getDefaultStatement();
077: if (stmt == null)
078: throw new AltHasNoDefaultException(this );
079: return stmt;
080: }
081:
082: public RDFNode getDefault() {
083: return needDefaultStatement().getObject();
084: }
085:
086: public Resource getDefaultResource() {
087: return needDefaultStatement().getResource();
088: }
089:
090: public Literal getDefaultLiteral() {
091: return needDefaultStatement().getLiteral();
092: }
093:
094: public boolean getDefaultBoolean() {
095: return needDefaultStatement().getBoolean();
096: }
097:
098: public byte getDefaultByte() {
099: return needDefaultStatement().getByte();
100: }
101:
102: public short getDefaultShort() {
103: return needDefaultStatement().getShort();
104: }
105:
106: public int getDefaultInt() {
107: return needDefaultStatement().getInt();
108: }
109:
110: public long getDefaultLong() {
111: return needDefaultStatement().getLong();
112: }
113:
114: public char getDefaultChar() {
115: return needDefaultStatement().getChar();
116: }
117:
118: public float getDefaultFloat() {
119: return needDefaultStatement().getFloat();
120: }
121:
122: public double getDefaultDouble() {
123: return needDefaultStatement().getDouble();
124: }
125:
126: public String getDefaultString() {
127: return needDefaultStatement().getString();
128: }
129:
130: public String getDefaultLanguage() {
131: return needDefaultStatement().getLanguage();
132: }
133:
134: public Resource getDefaultResource(ResourceF f) {
135: return needDefaultStatement().getResource();
136: }
137:
138: public Object getDefaultObject(ObjectF f) {
139: return needDefaultStatement().getObject(f);
140: }
141:
142: public Alt getDefaultAlt() {
143: return needDefaultStatement().getAlt();
144: }
145:
146: public Bag getDefaultBag() {
147: return needDefaultStatement().getBag();
148: }
149:
150: public Seq getDefaultSeq() {
151: return needDefaultStatement().getSeq();
152: }
153:
154: public Alt setDefault(RDFNode o) {
155: Statement stmt = getDefaultStatement();
156: if (stmt != null)
157: getModel().remove(stmt);
158: getModel().add(this , RDF.li(1), o);
159: return this ;
160: }
161:
162: public Alt setDefault(boolean o) {
163: return setDefault(String.valueOf(o));
164: }
165:
166: public Alt setDefault(long o) {
167: return setDefault(String.valueOf(o));
168: }
169:
170: public Alt setDefault(char o) {
171: return setDefault(String.valueOf(o));
172: }
173:
174: public Alt setDefault(float o) {
175: return setDefault(String.valueOf(o));
176: }
177:
178: public Alt setDefault(double o) {
179: return setDefault(String.valueOf(o));
180: }
181:
182: public Alt setDefault(Object o) {
183: return setDefault(String.valueOf(o));
184: }
185:
186: public Alt setDefault(String o) {
187: return setDefault(o, "");
188: }
189:
190: public Alt setDefault(String o, String l) {
191: return setDefault(new LiteralImpl(Node.createLiteral(o, l,
192: false), getModelCom()));
193: }
194:
195: protected Statement getDefaultStatement() {
196: StmtIterator iter = getModel().listStatements(this , RDF.li(1),
197: (RDFNode) null);
198: try {
199: return iter.hasNext() ? iter.nextStatement() : null;
200: } finally {
201: iter.close();
202: }
203: }
204:
205: }
|