/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
*
* 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 org.jkiss.dbeaver.model.impl.struct;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.impl.DBPositiveNumberTransformer;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.struct.DBSAttributeBase;
/**
* AbstractAttribute
*/
public abstract class AbstractAttribute implements DBSAttributeBase
{
protected String name;
protected int valueType;
protected long maxLength;
protected boolean required;
protected boolean autoGenerated;
protected int scale;
protected int precision;
protected String typeName;
protected int ordinalPosition;
protected AbstractAttribute()
{
}
// Copy constructor
protected AbstractAttribute(DBSAttributeBase source)
{
this.name = source.getName();
this.valueType = source.getTypeID();
this.maxLength = source.getMaxLength();
this.scale = source.getScale();
this.precision = source.getPrecision();
this.required = source.isRequired();
this.autoGenerated = source.isAutoGenerated();
this.typeName = source.getTypeName();
this.ordinalPosition = source.getOrdinalPosition();
}
protected AbstractAttribute(
String name,
String typeName,
int valueType,
int ordinalPosition,
long maxLength,
int scale,
int precision,
boolean required,
boolean autoGenerated)
{
this.name = name;
this.valueType = valueType;
this.maxLength = maxLength;
this.scale = scale;
this.precision = precision;
this.required = required;
this.autoGenerated = autoGenerated;
this.typeName = typeName;
this.ordinalPosition = ordinalPosition;
}
@NotNull
@Override
@Property(viewable = true, order = 10)
public String getName()
{
return name;
}
public void setName(String columnName)
{
this.name = columnName;
}
@Override
@Property(viewable = true, order = 20)
public String getTypeName()
{
return typeName;
}
@Override
public String getFullTypeName() {
return DBUtils.getFullTypeName(this);
}
public void setTypeName(String typeName)
{
this.typeName = typeName;
}
@Property(viewable = true, order = 15)
public int getOrdinalPosition()
{
return ordinalPosition;
}
public void setOrdinalPosition(int ordinalPosition)
{
this.ordinalPosition = ordinalPosition;
}
@Override
public int getTypeID()
{
return valueType;
}
public void setValueType(int valueType)
{
this.valueType = valueType;
}
@Override
@Property(viewable = true, order = 40)
public long getMaxLength()
{
return maxLength;
}
public void setMaxLength(long maxLength)
{
this.maxLength = maxLength;
}
@Override
@Property(viewable = false, valueRenderer = DBPositiveNumberTransformer.class, order = 41)
public int getScale()
{
return scale;
}
public void setScale(int scale)
{
this.scale = scale;
}
@Override
@Property(viewable = false, valueRenderer = DBPositiveNumberTransformer.class, order = 42)
public int getPrecision()
{
return precision;
}
public void setPrecision(int precision)
{
this.precision = precision;
}
@Property(viewable = true, order = 50)
public boolean isRequired()
{
return required;
}
public void setRequired(boolean required)
{
this.required = required;
}
@Property(viewable = true, order = 55)
public boolean isAutoGenerated() {
return autoGenerated;
}
public void setAutoGenerated(boolean autoGenerated) {
this.autoGenerated = autoGenerated;
}
@Nullable
public String getDescription()
{
return null;
}
public boolean isPersisted()
{
return true;
}
@Override
public String toString() {
return name + ", type=" + typeName + ", pos=" + ordinalPosition;
}
}