package net.sf.minuteProject.plugin.osem; import java.util.List; import net.sf.minuteProject.configuration.bean.model.data.Column; import net.sf.minuteProject.configuration.bean.model.data.Database; import net.sf.minuteProject.configuration.bean.model.data.Table; import net.sf.minuteProject.utils.TableUtils; public class SolrUtils { public static final String SOLR_BOOLEAN_TYPE = "boolean"; public static final String SOLR_LONG_TYPE = "sfloat"; public static final String SOLR_DOUBLE_TYPE = "sfloat"; public static final String SOLR_INTEGER_TYPE = "integer"; public static final String SOLR_TIMESTAMP_TYPE = "date"; public static final String SOLR_BIGDECIMAL_TYPE = "sfloat"; public static final String SOLR_STRING_TYPE = "text"; public static final String SOLR_DATE_TYPE = "date"; public static final String SOLR_BLOB_TYPE = "binary"; public static final String SOLR_CLOB_TYPE = "text"; public static final String SOLR_FLOAT_TYPE = "sfloat"; public static final String SOLR_PK_TYPE = "string"; public static Column getSolrPkColumn (Database database) { List<Table> roots = OsemUtils.getSearchRootTables(database); for (Table table : roots) { return TableUtils.getPrimaryFirstColumn(table); } return null; } public static Column getDefaultSearchColumn (Database database) { List<Table> roots = OsemUtils.getSearchRootTables(database); for (Table table : roots) { return getDefaultSearchColumn(table); } return null; } public static Column getDefaultSearchColumn (Table table) { return getFirstFieldNotPk (table); } private static Column getFirstFieldNotPk (Table table) { for (Column column : table.getAttributes()) { return column; } return null; } public static String getType (Column column) { if (column.isPrimaryKey()) return SOLR_PK_TYPE; return getSolrType(column.getType()); } private static String getSolrType(String dBType) { String retStr=null; dBType = dBType.toUpperCase(); if (dBType.equals("BOOLEAN") || dBType.equals("TINYINT") ) return SOLR_BOOLEAN_TYPE; if (dBType.equals("BIGINT")) return SOLR_LONG_TYPE; if (dBType.equals("DOUBLE")) return SOLR_DOUBLE_TYPE; if (dBType.equals("INT")) return SOLR_INTEGER_TYPE; if (dBType.equals("TIME")) return SOLR_TIMESTAMP_TYPE; if (dBType.equals("DECIMAL")) return SOLR_BIGDECIMAL_TYPE; if (dBType.equals("SMALLINT")) return SOLR_STRING_TYPE; if (dBType.equals("VARCHAR")) return SOLR_STRING_TYPE; if (dBType.equals("FLOAT")) return SOLR_FLOAT_TYPE; if (dBType.equals("LONGVARCHAR")) return SOLR_STRING_TYPE; if (dBType.equals("VARCHAR2")) return SOLR_STRING_TYPE; if (dBType.equals("VARGRAPHIC")) return SOLR_STRING_TYPE; if (dBType.equals("CHAR")) return SOLR_STRING_TYPE; if (dBType.equals("INTEGER") || dBType.equals("INT")) return SOLR_INTEGER_TYPE; if (dBType.equals("NUMERIC")) return SOLR_INTEGER_TYPE; if (dBType.equals("NUMBER")) return SOLR_LONG_TYPE; if (dBType.equals("DATE")) return SOLR_DATE_TYPE; if (dBType.equals("TIMESTAMP")) return SOLR_TIMESTAMP_TYPE; if (dBType.equals("BLOB")) return SOLR_BLOB_TYPE; if (dBType.equals("BINARY")) return SOLR_BLOB_TYPE; if (dBType.equals("CLOB") || dBType.equals("TEXT")) return SOLR_CLOB_TYPE; if (dBType.equals("NVARCHAR2")) return SOLR_STRING_TYPE; if (dBType.equals("NVARCHAR")) return SOLR_STRING_TYPE; if (dBType.equals("OTHER")) return SOLR_STRING_TYPE; return retStr; } }