/*******************************************************************************
* Copyright 2013 SAP AG
*
* Licensed 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 com.sap.core.odata.api.edm.provider;
import java.util.ArrayList;
import java.util.List;
import com.sap.core.odata.api.edm.EdmConcurrencyMode;
import com.sap.core.odata.api.edm.EdmFacets;
/**
* Objects of this class represent the facets an entity type, property or function import can have
* @author SAP AG
*/
public class Facets implements EdmFacets {
/** Specification default is TRUE but we won't set it here because
* we want to know if it's set explicitly by an application. */
Boolean nullable;
String defaultValue;
Integer maxLength;
Boolean fixedLength;
Integer precision;
Integer scale;
Boolean unicode;
String collation;
EdmConcurrencyMode concurrencyMode;
@Override
public Boolean isNullable() {
return nullable;
}
@Override
public String getDefaultValue() {
return defaultValue;
}
@Override
public Integer getMaxLength() {
return maxLength;
}
@Override
public Boolean isFixedLength() {
return fixedLength;
}
@Override
public Integer getPrecision() {
return precision;
}
@Override
public Integer getScale() {
return scale;
}
@Override
public Boolean isUnicode() {
return unicode;
}
@Override
public String getCollation() {
return collation;
}
@Override
public EdmConcurrencyMode getConcurrencyMode() {
return concurrencyMode;
}
/**
* Sets if this {@link Facets} is nullable
* @param nullable
* @return {@link Facets} for method chaining
*/
public Facets setNullable(final Boolean nullable) {
this.nullable = nullable;
return this;
}
/**
* Sets the fixed length of this {@link Facets}
* @param fixedLength
* @return {@link Facets} for method chaining
*/
public Facets setFixedLength(final Boolean fixedLength) {
this.fixedLength = fixedLength;
return this;
}
/**
* Sets if this {@link Facets} is in Unicode
* @param unicode
* @return {@link Facets} for method chaining
*/
public Facets setUnicode(final Boolean unicode) {
this.unicode = unicode;
return this;
}
/**
* Sets the default value of this {@link Facets}
* @param defaultValue
* @return {@link Facets} for method chaining
*/
public Facets setDefaultValue(final String defaultValue) {
this.defaultValue = defaultValue;
return this;
}
/**
* Sets the maximum length of this {@link Facets}
* @param maxLength
* @return {@link Facets} for method chaining
*/
public Facets setMaxLength(final Integer maxLength) {
this.maxLength = maxLength;
return this;
}
/**
* Sets the precision of this {@link Facets}
* @param precision
* @return {@link Facets} for method chaining
*/
public Facets setPrecision(final Integer precision) {
this.precision = precision;
return this;
}
/**
* Sets the scale of this {@link Facets}
* @param scale
* @return {@link Facets} for method chaining
*/
public Facets setScale(final Integer scale) {
this.scale = scale;
return this;
}
/**
* Sets the collation of this {@link Facets}
* @param collation
* @return {@link Facets} for method chaining
*/
public Facets setCollation(final String collation) {
this.collation = collation;
return this;
}
/**
* Sets the {@link EdmConcurrencyMode} of this {@link Facets}
* @param concurrencyMode
* @return {@link Facets} for method chaining
*/
public Facets setConcurrencyMode(final EdmConcurrencyMode concurrencyMode) {
this.concurrencyMode = concurrencyMode;
return this;
}
@Override
public String toString() {
final List<String> values = new ArrayList<String>();
if (nullable != null) {
values.add("Nullable=" + nullable);
}
if (defaultValue != null) {
values.add("DefaultValue=" + defaultValue);
}
if (maxLength != null) {
values.add("MaxLength=" + maxLength);
}
if (fixedLength != null) {
values.add("FixedLength=" + fixedLength);
}
if (precision != null) {
values.add("Precision=" + precision);
}
if (scale != null) {
values.add("Scale=" + scale);
}
if (unicode != null) {
values.add("Unicode=" + unicode);
}
if (collation != null) {
values.add("Collation=" + collation);
}
if (concurrencyMode != null) {
values.add("ConcurrencyMode=" + concurrencyMode);
}
return values.toString();
}
}