/* * 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; } }