/* * * YAQP - Yet Another QSAR Project: * Machine Learning algorithms designed for the prediction of toxicological * features of chemical compounds become available on the Web. Yaqp is developed * under OpenTox (http://opentox.org) which is an FP7-funded EU research project. * This project was developed at the Automatic Control Lab in the Chemical Engineering * School of the National Technical University of Athens. Please read README for more * information. * * Copyright (C) 2009-2010 Pantelis Sopasakis & Charalampos Chomenides * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Contact: * Pantelis Sopasakis * chvng@mail.ntua.gr * Address: Iroon Politechniou St. 9, Zografou, Athens Greece * tel. +30 210 7723236 */ package org.opentox.db.table.collection; import org.opentox.db.table.Table; import org.opentox.db.table.TableColumn; import org.opentox.db.util.SQLDataTypes; /** * * @author Pantelis Sopasakis * @author Charalampos Chomenides */ public final class QSARModelsTable { private static final String _TABLE = "QSAR_MODELS", _UID = "UID", _CODE = "CODE", _PREDICTION = "PREDICTION_FEATURE", _DEPENDENT = "DEPENDENT_FEATURE", _ALGORITHM = "ALGORITHM", _CREATED_BY = "CREATED_BY", _TIMESTAMP = "TMSTMP", _DATASET = "DATASET_URI", _STATUS = "STATUS", DEFAULT_STATUS = "'UNDER DEVELOPMENT'", CONSTRAINT_STATUS = "MOD_STATUS_CONSTRAINT"; private static final int DATASET_SIZE = 150, STATUS_SIZE = 50, CODE_SIZE = 40; public static final TableColumn UID = uid(); public static final TableColumn CODE = code(); public static final TableColumn PREDICTION_FEATURE = pred(); public static final TableColumn DEPENDENT_FEATURE = dep(); public static final TableColumn ALGORITHM = algorithm(); public static final TableColumn CREATED_BY = createdBy(); public static final TableColumn TIMESTAMP = timestamp(); public static final TableColumn DATASET = datasetUri(); public static final TableColumn STATUS = status(); public static final Table TABLE = table(); private static final Table table(){ Table talbe = new Table(_TABLE); talbe.addColumn(UID); talbe.addColumn(CODE); talbe.addColumn(PREDICTION_FEATURE); talbe.addColumn(DEPENDENT_FEATURE); talbe.addColumn(ALGORITHM); talbe.addColumn(CREATED_BY); talbe.addColumn(TIMESTAMP); talbe.addColumn(DATASET); talbe.addColumn(STATUS); return talbe; } private static TableColumn uid() { TableColumn uid = new TableColumn(_UID); uid.setColumnType(SQLDataTypes.Int()); uid.setNotNull(true); uid.setPrimaryKey(true, true); return uid; } private static TableColumn code() { TableColumn code = new TableColumn(_CODE); code.setColumnType(SQLDataTypes.VarChar(CODE_SIZE)); code.setNotNull(true); return code; } private static TableColumn pred() { TableColumn prediction_feature = new TableColumn(_PREDICTION); prediction_feature.setColumnType(SQLDataTypes.Int()); prediction_feature.setNotNull(true); prediction_feature.setForeignKey(FeaturesTable.TABLE.getTableName(), FeaturesTable.UID.getColumnName(), true); return prediction_feature; } private static TableColumn dep() { TableColumn dependent_feature = new TableColumn(_DEPENDENT); dependent_feature.setColumnType(SQLDataTypes.Int()); dependent_feature.setNotNull(true); dependent_feature.setForeignKey(FeaturesTable.TABLE.getTableName(), FeaturesTable.UID.getColumnName(), true); return dependent_feature; } private static TableColumn algorithm() { TableColumn algorithm = new TableColumn(_ALGORITHM); algorithm.setColumnType(AlgorithmsTable.NAME.getColumnType()); algorithm.setNotNull(true); algorithm.setForeignKey(AlgorithmsTable.TABLE.getTableName(), AlgorithmsTable.NAME.getColumnName(), true); return algorithm; } private static TableColumn createdBy() { TableColumn createdBy = new TableColumn(_CREATED_BY); createdBy.setColumnType(UsersTable.EMAIL.getColumnType()); createdBy.setNotNull(true); createdBy.setForeignKey(UsersTable.TABLE.getTableName(), UsersTable.EMAIL.getColumnName(), true); return createdBy; } private static TableColumn timestamp() { TableColumn timestamp = new TableColumn(_TIMESTAMP); timestamp.setColumnType(SQLDataTypes.Timestamp()); timestamp.setDefaultValue("CURRENT TIMESTAMP"); return timestamp; } private static TableColumn datasetUri() { TableColumn dataset = new TableColumn(_DATASET); dataset.setColumnType(SQLDataTypes.VarChar(DATASET_SIZE)); dataset.setNotNull(true); return dataset; } private static TableColumn status() { TableColumn status = new TableColumn(_STATUS); status.setColumnType(SQLDataTypes.VarChar(STATUS_SIZE)); status.setDefaultValue(DEFAULT_STATUS); status.setConstraint(CONSTRAINT_STATUS, _STATUS + " IN ('UNDER_DEVELOPMENT','APPROVED')"); return status; } }