|| (kind == QUERY_FOR_COUNTING)) && schema.isFlatMode(qc.getType())) || (kind == QUERY_FOR_PRECOMP)) { Iterator<FieldDescriptor> fieldIter = null; ClassDescriptor cld = schema.getModel().getClassDescriptorByName(qc.getType() .getName()); if (schema.isFlatMode(qc.getType()) && ((kind == QUERY_NORMAL) || (kind == QUERY_FOR_GOFASTER) || (kind == QUERY_FOR_COUNTING))) { List<Iterator<? extends FieldDescriptor>> iterators = new ArrayList<Iterator<? extends FieldDescriptor>>(); DatabaseSchema.Fields fields = schema.getTableFields(schema .getTableMaster(cld)); iterators.add(fields.getAttributes().iterator()); iterators.add(fields.getReferences().iterator()); if (schema.isFlatMode(qc.getType()) && schema.isTruncated(schema.getTableMaster(cld))) { buffer.append(", ") .append(fieldToAlias.get("class"))
schema = new DatabaseSchema(osModel, truncatedClasses, noNotXml, missingTables, FORMAT_VERSION); } catch (ClassCastException e) {
StringBuffer sb = new StringBuffer(); className = DatabaseUtil.getTableName(cld); if (!schema.getMissingTables().contains(className.toLowerCase())) { if ((!(schema.isMissingNotXml() || schema.isFlatMode(cld.getType()))) || InterMineObject.class.equals(cld.getType())) { sb.append(generateColumn("OBJECT", "java.lang.String")); DatabaseSchema.Fields fields = schema.getTableFields(cld); for (AttributeDescriptor field : fields.getAttributes()) { sb.append(generateColumn(DatabaseUtil.getColumnName(field), field.getType())); if (schema.isTruncated(cld)) { sb.append(generateColumn("class", "java.lang.String")); sb.append(generateColumn("tableclass", "java.lang.String")); + ENDL + INDENT + INDENT + "</unique>" + ENDL); } else { if (!schema.isFlatMode(cld.getType())) { sb.append(generateColumn("class", "java.lang.String"));
/** * Returns the table name used by the ID fetch query. * * @param clazz the Class of the object * @param schema the DatabaseSchema * @return a table name * @throws ObjectStoreException if the given class is not in the model */ public static String tableNameForId(Class<?> clazz, DatabaseSchema schema) throws ObjectStoreException { ClassDescriptor tableMaster; if (schema.isMissingNotXml()) { tableMaster = schema.getModel() .getClassDescriptorByName(InterMineObject.class.getName()); } else { ClassDescriptor cld = schema.getModel().getClassDescriptorByName(clazz.getName()); if (cld == null) { throw new ObjectStoreException(clazz.toString() + " is not in the model"); } tableMaster = schema.getTableMaster(cld); } return DatabaseUtil.getTableName(tableMaster); }
if (schema.isMissingNotXml()) { tableMaster = schema.getModel() .getClassDescriptorByName(InterMineObject.class.getName()); } else { ClassDescriptor cld = schema.getModel().getClassDescriptorByName(clazz.getName()); if (cld == null) { throw new ObjectStoreException(clazz.toString() + " is not in the model"); tableMaster = schema.getTableMaster(cld); if (schema.isTruncated(tableMaster)) { return "SELECT a1_.OBJECT AS a1_ FROM " + DatabaseUtil.getTableName(tableMaster) + " AS a1_ WHERE a1_.id = " + id.toString()
truncated.add(manager); truncated.add(employee); DatabaseSchema schema = new DatabaseSchema(model, truncated, false, Collections.EMPTY_SET, 1); assertTrue(schema.isTruncated(manager)); assertTrue(schema.isTruncated(employee)); assertFalse(schema.isTruncated(ceo)); assertFalse(schema.isTruncated(company)); assertFalse(schema.isTruncated(importantPerson)); assertEquals(employee, schema.getTableMaster(employee)); assertEquals(manager, schema.getTableMaster(manager)); assertEquals(manager, schema.getTableMaster(ceo)); assertEquals(company, schema.getTableMaster(company)); assertEquals(importantPerson, schema.getTableMaster(importantPerson)); employeeReferences.add(employee.getFieldDescriptorByName("address")); employeeAttributes.add(employee.getFieldDescriptorByName("name")); DatabaseSchema.Fields got = schema.getTableFields(employee); assertEquals(employeeAttributes, got.getAttributes()); assertEquals(employeeReferences, got.getReferences()); managerAttributes.add(ceo.getFieldDescriptorByName("salary")); managerReferences.add(ceo.getFieldDescriptorByName("company")); got = schema.getTableFields(manager); assertEquals(managerAttributes, got.getAttributes()); assertEquals(managerReferences, got.getReferences()); companyReferences.add(company.getFieldDescriptorByName("address"));
ClassDescriptor tableMaster = schema.getTableMaster(cld); String tableName = DatabaseUtil.getTableName(tableMaster); if (!schema.getMissingTables().contains(tableName.toLowerCase())) { batch.deleteRow(c, tableName, "id", ((InterMineObject) o).getId()); tablesAltered.add(tableName); ClassDescriptor tableMaster = schema.getTableMaster(cld); TableInfo tableInfo = getTableInfo(tableMaster); Set<CollectionDescriptor> collections = tableToCollections.get(cld.getName()); if (!schema.getMissingTables().contains(tableInfo.tableName.toLowerCase())) { tablesWritten++; if (schema.isFlatMode(cld.getType()) && (!schema.isTruncated(schema .getTableMaster(cld))) && (!(cld.getType().equals(o.getClass())))) { Set<Class<?>> decomposed = Util.decomposeClass(o.getClass()); if (schema.isFlatMode(cld.getType())) { for (String validFieldName : validFieldNames) { if (!fieldNamesWritten.contains(validFieldName)) {
.append("<database name=\"\">" + ENDL); for (ClassDescriptor cld : schema.getModel().getClassDescriptors()) { ClassDescriptor tableMaster = schema.getTableMaster(cld); if (cld == tableMaster) { sb.append(generate(cld));
Fields retval = tableMasterToFieldDescriptors.get(cld); if (retval == null) { if (isTruncated(cld)) { Map<String, AttributeDescriptor> attributeMap = new HashMap<String, AttributeDescriptor>(); ClassDescriptor subsMaster = getTableMaster(subCld); if ((subsMaster == cld) || isFlatMode(cld.getType())) { String type = ((AttributeDescriptor) field).getType(); String origType = origField.getType(); if (!compatible(type, origType)) { throw new ObjectStoreException("Fields " + field.getClassDescriptor().getName() + "."
QueryClass arg2 = c.getQueryClass(); InterMineObject arg2Obj = c.getObject(); Map<String, FieldDescriptor> fieldNameToFieldDescriptor = schema.getModel() .getFieldDescriptorsForClass(arg1.getQcType()); ReferenceDescriptor arg1Desc = (ReferenceDescriptor) ClassDescriptor tableMaster = schema.getTableMaster(reverse .getClassDescriptor()); state.addToFrom(DatabaseUtil.getTableName(tableMaster) + " AS " + indirectTableAlias); buffer.append(loseBrackets ? "" : "("); if (schema.isTruncated(tableMaster)) { buffer.append(indirectTableAlias + ".tableclass = '" + reverse.getClassDescriptor().getType().getName() + "' AND "); String indirectTableAlias = state.getIndirectAlias(); String arg2Alias = indirectTableAlias + "." + DatabaseUtil.getInwardIndirectionColumnName(arg1ColDesc, schema.getVersion()); state.addToFrom(DatabaseUtil.getIndirectionTableName(arg1ColDesc) + " AS " + indirectTableAlias); schema.getVersion()) + " = "); if (arg2 == null) { buffer.append("" + arg2Obj.getId());
clds.addAll(cld.getModel().getAllSubs(cld)); for (ClassDescriptor nextCld : clds) { ClassDescriptor tableMaster = schema.getTableMaster(nextCld); String tableName = DatabaseUtil.getTableName(tableMaster).toLowerCase(); if (!schema.getMissingTables().contains(tableName)) { String indexNameBase; if (tableName.equals(cldTableName)) { ClassDescriptor tableMaster = schema.getTableMaster(cld); String tableName = DatabaseUtil.getTableName(tableMaster).toLowerCase(); if (FieldDescriptor.N_ONE_RELATION == ref.relationType()) { if (!schema.getMissingTables().contains(tableName)) { String fieldName = DatabaseUtil.getColumnName(ref); if (!doneFieldNames.contains(fieldName)) { String tableName = DatabaseUtil.getIndirectionTableName(col).toLowerCase(); String columnName = DatabaseUtil.getInwardIndirectionColumnName(col, schema.getVersion()); String columnName2 = DatabaseUtil.getOutwardIndirectionColumnName(col, schema.getVersion()); if ((columnName.compareTo(columnName2) < 0) || (col.getReverseReferenceDescriptor() == null)) {
ClassDescriptor tableMaster = schema.getTableMaster(cld); String tableName = DatabaseUtil.getTableName(tableMaster); if (!schema.getMissingTables().contains(tableName.toLowerCase())) { batch.deleteRow(c, tableName, "id", o.getId()); tablesAltered.add(tableName);
+ DatabaseUtil.getColumnName(reverse); ClassDescriptor referencedClass = schema.getTableMaster(reverse .getClassDescriptor()); buffer.append(DatabaseUtil.getTableName(referencedClass) + " AS " String inwardIndirectionCol = indirectTableAlias + "." + DatabaseUtil.getInwardIndirectionColumnName(arg1ColDesc, schema.getVersion()); buffer.append(indirectionTable + " AS " + indirectTableAlias); buffer.append(" WHERE " + inwardIndirectionCol + " = " + arg1Alias);
= (ObjectStoreInterMineImpl) os; DatabaseSchema schema = osimi.getSchema(); ClassDescriptor tableMaster = schema.getTableMaster(cld); String tableName = DatabaseUtil.getTableName(tableMaster); List<String> fields = new ArrayList<String>();
if (!schema.isFlatMode(ref.getQueryClass().getType())) { state.addToOrderBy(buffer.toString()); && (!schema.isFlatMode(ref.getQueryClass().getType()))) { state.addToOrderBy(buffer.toString()); if (!schema.isFlatMode(InterMineObject.class)) { state.addToOrderBy(buffer.toString()); && ((kind == QUERY_FOR_PRECOMP) || (kind == QUERY_FOR_GOFASTER)) && (!schema.isFlatMode(InterMineObject.class))) { state.addToOrderBy(buffer.toString());
if (!schema.getMissingTables().contains(tableName)) {
/** * Generate an indirection table * * @param col the CollectionDescriptor to generate table for * @return a String representing the schema for the indirection table */ protected String generateIndirectionTable(CollectionDescriptor col) { StringBuffer sb = new StringBuffer(); String table = DatabaseUtil.getIndirectionTableName(col); String column1 = DatabaseUtil.getInwardIndirectionColumnName(col, schema.getVersion()); String column2 = DatabaseUtil.getOutwardIndirectionColumnName(col, schema.getVersion()); sb.append(INDENT + "<table name=\"") .append(table) .append("\">" + ENDL) .append(generateColumn(column1, "int")) .append(generateColumn(column2, "int")) .append(INDENT + "</table>" + ENDL); return sb.toString(); }
/** * Constructs an ObjectStoreInterMineImpl, with a schema. * * @param db the database in which the model resides * @param schema the schema * @throws NullPointerException if db or model are null * @throws IllegalArgumentException if db or model are invalid */ protected ObjectStoreInterMineImpl(Database db, DatabaseSchema schema) { super(schema.getModel()); this.db = db; this.schema = schema; ShutdownHook.registerObject(new WeakReference<Object>(this)); limitedContext = new QueryOptimiserContext(); limitedContext.setTimeLimit(getMaxTime() / 10); maxQueryParseTime = getMaxQueryParseTime(); if (maxQueryParseTime != null) { limitedContext.setMaxQueryParseTime(maxQueryParseTime); } description = "ObjectStoreInterMineImpl(" + db + ")"; }
.getFieldDescriptorsForClass(retval.getClass()); Map<String, TypeUtil.FieldInfo> fieldInfos = TypeUtil.getFieldInfos(clazz); boolean fetchFromInterMineObject = os.getSchema().isFetchFromInterMineObject(); for (int i = 2; i < a.length; i += 2) { if (a[i].startsWith("a")) {
truncated.add(manager); truncated.add(employee); DatabaseSchema schema = new DatabaseSchema(model, truncated, true, Collections.singleton("intermineobject"), 1); assertTrue(schema.isTruncated(manager)); assertTrue(schema.isTruncated(employee)); assertFalse(schema.isTruncated(ceo)); assertFalse(schema.isTruncated(company)); assertFalse(schema.isTruncated(importantPerson)); assertEquals(employee, schema.getTableMaster(employee)); assertEquals(manager, schema.getTableMaster(manager)); assertEquals(manager, schema.getTableMaster(ceo)); assertEquals(company, schema.getTableMaster(company)); assertEquals(importantPerson, schema.getTableMaster(importantPerson)); employeeAttributes.add(ceo.getFieldDescriptorByName("salary")); employeeReferences.add(ceo.getFieldDescriptorByName("company")); DatabaseSchema.Fields got = schema.getTableFields(employee); assertEquals(employeeAttributes, got.getAttributes()); assertEquals(employeeReferences, got.getReferences()); managerAttributes.add(ceo.getFieldDescriptorByName("salary")); managerReferences.add(ceo.getFieldDescriptorByName("company")); got = schema.getTableFields(manager); assertEquals(managerAttributes, got.getAttributes()); assertEquals(managerReferences, got.getReferences()); companyReferences.add(company.getFieldDescriptorByName("address"));