public AtomicDatatype intersection( AtomicDatatype dt ) { if( this == dt ) return this; GenericIntervalList result = new GenericIntervalList( valueSpace ); if( dt instanceof BaseXSDAtomicType ) { BaseXSDAtomicType other = (BaseXSDAtomicType) dt; GenericIntervalList original = new GenericIntervalList( values ); Iterator it = other.values.iterator(); while( it.hasNext() ) { GenericIntervalList.Interval interval = (GenericIntervalList.Interval) it.next(); GenericIntervalList o = new GenericIntervalList( original ); o.restrictToInterval( interval ); result.addIntervalList( o ); } } return create( result ); }
public Datatype singleton( Object value ) { GenericIntervalList result = new GenericIntervalList( valueSpace ); result.addInterval( value, value ); return create( result ); }
/** * @requires: end >= start * * @effects: adds the range from <code>start</code> to <code>end</code> to this. */ public void addInterval( Object start, boolean incStart, Object end, boolean incEnd ) { addIntervalInternal( start, incStart, end, incEnd ); canonicalize(); }
/** * @requires: end >= start * * @effects: removes the range of numbers from <code>start</code> to <code>end</code> from * this. */ public void removeInterval( Object start, boolean incStart, Object end, boolean incEnd) { removeIntervalInternal( start, incStart, end, incEnd ); canonicalize(); }
public AtomicDatatype union( AtomicDatatype dt ) { if( this == dt ) return this; GenericIntervalList result = new GenericIntervalList( valueSpace ); if( dt instanceof BaseXSDAtomicType ) { BaseXSDAtomicType other = (BaseXSDAtomicType) dt; result.addIntervalList( values ); result.addIntervalList( other.values ); } return create( result ); }
public AtomicDatatype difference( AtomicDatatype dt ) { if( this == dt ) return EmptyDatatype.instance; GenericIntervalList result = new GenericIntervalList( valueSpace ); if( dt instanceof BaseXSDAtomicType ) { BaseXSDAtomicType other = (BaseXSDAtomicType) dt; result.addIntervalList( values ); result.removeIntervalList( other.values ); } return create( result ); }
GenericIntervalList intervalList = new GenericIntervalList( values ); intervalList.restrictToInterval( start, incStart, end, incEnd );
public boolean contains( Object value ) { if( valueSpace.isValid( value ) ) return values.contains( value ); return false; }
public ATermAppl getValue( int i ) { Object value = values.get( i ); String lexical = valueSpace.getLexicalForm( value ); // xsdlib wrongly expects the gMonth value to be in the format --MM-- // whereas the correct format is --MM. This small hack removes the // string "--" from the end of xsdlib generated lexical representation // to create a valid gMonth value assert lexical.endsWith( "--" ); assert lexical.length() == 6; lexical = lexical.substring( 0, 4 ); return ATermUtils.makeTypedLiteral( lexical, getPrimitiveType().getURI() ); } }
/** * @requires: end >= start * * @effects: adds the range from <code>start</code> to <code>end</code> to this. */ public void addInterval( Object start, Object end ) { addInterval( start, true, end, true ); }
public int size() { return values.count(); }
protected BaseXSDAtomicType( ATermAppl name, ValueSpace valueSpace ) { super( name ); this.valueSpace = valueSpace; this.values = new GenericIntervalList( valueSpace.getMinValue(), valueSpace.getMaxValue(), valueSpace ); }
/** * @effects: removes from this all of the numbers represented by <code>il</code>. */ public void removeIntervalList( GenericIntervalList il ) { Iterator iter = il.intervals.iterator(); while( iter.hasNext() ) { Interval i = (Interval) iter.next(); removeIntervalInternal( i.start(), i.incStart(), i.end(), i.incEnd() ); } canonicalize(); }
public Object getValue( String value, String datatypeURI ) { try { Object obj = valueSpace.getValue( value.trim() ); return obj != null && values.contains( obj ) ? obj : null; } catch( NumberFormatException e ) { return null; } }
public ATermAppl getValue( int i ) { Object value = values.get( i ); // System.out.println(this + " " + i + " " + value); String lexical = valueSpace.getLexicalForm( value ); return ATermUtils.makeTypedLiteral( lexical, getPrimitiveType().getURI() ); }
/** * @effects: adds to this all of numbers reprsented by <code>il</code>. */ public void addIntervalList( GenericIntervalList il ) { Iterator iter = il.intervals.iterator(); while( iter.hasNext() ) { Interval i = (Interval) iter.next(); addIntervalInternal( i.start(), i.incStart(), i.end(), i.incEnd() ); } canonicalize(); }
public AtomicDatatype enumeration( Set enum_ ) { GenericIntervalList result = new GenericIntervalList( valueSpace ); for( Iterator i = enum_.iterator(); i.hasNext(); ) { Number number = (Number) i.next(); result.addInterval( number, number ); } return create( result ); }