/* * Copyright Aduna (http://www.aduna-software.com/) (c) 2008. * * Licensed under the Aduna BSD-style license. */ package org.openrdf.sail.rdbms.schema; /** * A bit array of the possible value types that have been stored in an object * column. * * @author James Leigh * */ public class ValueTypes implements Cloneable { public static ValueTypes UNKNOWN = new ValueTypes(); static { UNKNOWN.bnodes = true; UNKNOWN.uris = true; UNKNOWN.literals = true; UNKNOWN.typed = true; UNKNOWN.numeric = true; UNKNOWN.calendar = true; UNKNOWN.languages = true; UNKNOWN.longValues = true; } public static ValueTypes RESOURCE = new ValueTypes(); static { RESOURCE.bnodes = true; RESOURCE.uris = true; RESOURCE.longValues = true; } public static ValueTypes URI = new ValueTypes(); static { URI.uris = true; URI.longValues = true; } private boolean bnodes; private boolean uris; private boolean literals; private boolean typed; private boolean numeric; private boolean calendar; private boolean languages; private boolean longValues; public boolean isBNodes() { return bnodes; } public boolean isURIs() { return uris; } public boolean isLiterals() { return literals; } public boolean isTyped() { return typed; } public boolean isNumeric() { return numeric; } public boolean isCalendar() { return calendar; } public boolean isLanguages() { return languages; } public boolean isLong() { return longValues; } public void reset() { bnodes = false; uris = false; literals = false; typed = false; numeric = false; calendar = false; languages = false; longValues = false; } public void add(ValueType code) { bnodes |= code.isBNode(); uris |= code.isURI(); literals |= code.isLiteral(); typed |= code.isTypedLiteral(); numeric |= code.isNumericLiteral(); calendar |= code.isCalendarLiteral(); languages |= code.isLanguageLiteral(); longValues |= code.isLong(); } public ValueTypes merge(ValueTypes valueTypes) { bnodes |= valueTypes.bnodes; uris |= valueTypes.uris; literals |= valueTypes.literals; typed |= valueTypes.typed; numeric |= valueTypes.numeric; calendar |= valueTypes.calendar; languages |= valueTypes.languages; longValues |= valueTypes.longValues; return this; } @Override public ValueTypes clone() { try { return (ValueTypes)super.clone(); } catch (CloneNotSupportedException e) { throw new AssertionError(); } } }