blob: 095c24bbb668e634976d516a9215ac3c3b6e0345 [file] [log] [blame]
/*
* Copyright (C) 2012 The Android Open Source Project
*
* 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.motorolamobility.studio.android.db.core.model;
import com.motorolamobility.studio.android.db.core.i18n.DbCoreNLS;
/**
* This class represents a table field
*/
public class Field
{
/**
* This enum represents the auto increment value for primary key field.
* Use the toString method to retrieve the SQL syntax keyword
*/
public enum AutoIncrementType
{
NONE("NONE"), ASCENDING("ASC"), DESCENDING("DESC"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
private String strValue;
private AutoIncrementType(String strValue)
{
this.strValue = strValue;
}
/* (non-Javadoc)
* @see java.lang.Enum#toString()
*/
@Override
public String toString()
{
return strValue;
}
}
/**
* This enum represents the DataType of a table field
* Use the toString method to retrieve the SQL syntax keyword
*/
public enum DataType
{
INTEGER("INTEGER"), TEXT("TEXT"), REAL("REAL"), BLOB("BLOB"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
private String strValue;
private DataType(String dataType)
{
this.strValue = dataType;
}
/* (non-Javadoc)
* @see java.lang.Enum#toString()
*/
@Override
public String toString()
{
return strValue;
}
}
private String name;
private boolean primaryKey;
private AutoIncrementType autoIncrementType;
private DataType type;
private String defaultValue;
@Override
public boolean equals(Object other)
{
boolean equals = false;
if (other instanceof Field)
{
equals = this.getName().equals(((Field) other).getName());
}
return equals;
}
/**
* Creates a new field representation based on the given params
* @param name
* @param primaryKey
* @param autoIncrementType
* @param type
* @param defaultValue
*/
public Field(String name, DataType type, boolean primaryKey,
AutoIncrementType autoIncrementType, String defaultValue)
{
this.name = name;
this.primaryKey = primaryKey;
this.autoIncrementType = autoIncrementType;
this.type = type;
this.defaultValue = defaultValue;
}
public Field()
{
this("", DataType.TEXT, false, AutoIncrementType.NONE, null); //$NON-NLS-1$
}
/**
* @return the name
*/
public String getName()
{
return name;
}
/**
* @param name the name to set
*/
public void setName(String name)
{
this.name = name;
}
/**
* @return the primaryKey
*/
public boolean isPrimaryKey()
{
return primaryKey;
}
/**
* @param primaryKey the primaryKey to set
*/
public void setPrimaryKey(boolean primaryKey)
{
this.primaryKey = primaryKey;
}
/**
* @return the autoIncrementType
*/
public AutoIncrementType getAutoIncrementType()
{
return autoIncrementType;
}
/**
* @param autoIncrementType the autoIncrementType to set
*/
public void setAutoIncrementType(AutoIncrementType autoIncrementType)
{
this.autoIncrementType = autoIncrementType;
}
/**
* @return the type
*/
public DataType getType()
{
return type;
}
/**
* @param type the type to set
*/
public void setType(DataType type)
{
this.type = type;
}
/**
* @return the defaultValue
*/
public String getDefaultValue()
{
return defaultValue;
}
/**
* @param defaultValue the defaultValue to set
*/
public void setDefaultValue(String defaultValue)
{
this.defaultValue = defaultValue;
}
public String getErrorMessage()
{
String message = null;
if (!type.equals(DataType.INTEGER) && !type.equals(DataType.REAL) //$NON-NLS-1$ //$NON-NLS-2$
&& !autoIncrementType.equals(AutoIncrementType.NONE))
{
message = DbCoreNLS.Field_ErrorAutoIncrementNotAllowed;
}
// Validate name to don't use sqlite keywords
if ((message == null) && !TableModel.validateName(getName()))
{
message = DbCoreNLS.AddTableFieldDialog_InvalidName + getName();
}
return message;
}
}