private Object[] getDiscriminatorValuesForCastClass(AbstractClassMetaData cmd) { // Restrict discriminator on cast type to be the type+subclasses Collection<String> castSubclassNames = storeMgr.getSubClassesForClass(cmd.getFullClassName(), true, clr); Object[] castDiscrimValues = new Object[1 + (castSubclassNames!=null ? castSubclassNames.size() : 0)]; int discNo = 0; castDiscrimValues[discNo++] = cmd.getDiscriminatorValue(); if (castSubclassNames != null && !castSubclassNames.isEmpty()) { for (String castSubClassName : castSubclassNames) { AbstractClassMetaData castSubCmd = storeMgr.getMetaDataManager().getMetaDataForClass(castSubClassName, clr); castDiscrimValues[discNo++] = castSubCmd.getDiscriminatorValue(); } } return castDiscrimValues; }
discrimValues.add(cmd.getDiscriminatorValue()); discrimValues.add(subclassCmd.getDiscriminatorValue());
/** * Method to add a filter to restrict any discriminator property to valid values. * @param qd QueryData * @param clr ClassLoader resolver */ private void addDiscriminator(QueryData qd, ClassLoaderResolver clr) { if (qd.acmd.hasDiscriminatorStrategy()) { String className = qd.acmd.getFullClassName(); boolean includeSubclasses = query.isSubclasses(); DatastoreManager storeMgr = getStoreManager(); String discriminatorPropertyName = EntityUtils.getDiscriminatorPropertyName(storeMgr.getIdentifierFactory(), qd.acmd.getDiscriminatorMetaDataRoot()); // Note : we always restrict the discriminator since the user may at some later point add other classes // to be persisted here, or have others that have data but aren't currently active in the persistence process List<Object> discriminatorValues = new ArrayList<Object>(); discriminatorValues.add(qd.acmd.getDiscriminatorValue()); if (includeSubclasses) { for (String subClassName : storeMgr.getSubClassesForClass(className, true, clr)) { AbstractClassMetaData subCmd = storeMgr.getMetaDataManager().getMetaDataForClass(subClassName, clr); discriminatorValues.add(subCmd.getDiscriminatorValue()); } } qd.primaryDatastoreQuery.addFilter(discriminatorPropertyName, Query.FilterOperator.IN, discriminatorValues); } }
Object discVal = info.getAbstractClassMetaData().getDiscriminatorValue(); if (discVal != null) Object discVal = subclassCmd.getDiscriminatorValue(); if (strategy != DiscriminatorStrategy.NONE)
String discValExpected = cls.getName(); if (discStr == DiscriminatorStrategy.VALUE_MAP) { discValExpected = (String) cmd.getDiscriminatorValue();
String columnName = HBaseUtils.getQualifierNameForColumn(table.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR)); Object discValue = new String(result.getValue(familyName.getBytes(), columnName.getBytes())); Object cmdDiscValue = cmd.getDiscriminatorValue(); if (cmd.getDiscriminatorStrategy() != DiscriminatorStrategy.NONE && !cmdDiscValue.equals(discValue))
Object discriminatorValue = targetCmd.getDiscriminatorValue(); if (dismd.getStrategy() == DiscriminatorStrategy.VALUE_MAP)
String columnName = HBaseUtils.getQualifierNameForColumn(table.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR)); Object discValue = new String(result.getValue(familyName.getBytes(), columnName.getBytes())); Object cmdDiscValue = cmd.getDiscriminatorValue(); if (cmd.getDiscriminatorStrategy() != DiscriminatorStrategy.NONE && !cmdDiscValue.equals(discValue))
} else if (acmd.getDiscriminatorStrategy() == DiscriminatorStrategy.VALUE_MAP) { Object discrimMDValue = acmd.getDiscriminatorValue(); if (discrimMDValue.equals(discrimValue)) { rowClassName = acmd.getFullClassName(); String className = (String) o; AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(className, clr); discrimMDValue = cmd.getDiscriminatorValue(); if (discrimValue.equals(discrimMDValue)) { rowClassName = className;
String columnName = HBaseUtils.getQualifierNameForColumn(table.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR)); Object discValue = new String(result.getValue(familyName.getBytes(), columnName.getBytes())); Object cmdDiscValue = cmd.getDiscriminatorValue(); if (cmd.getDiscriminatorStrategy() != DiscriminatorStrategy.NONE && !cmdDiscValue.equals(discValue))
String columnName = HBaseUtils.getQualifierNameForColumn(table.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR)); Object discValue = new String(result.getValue(familyName.getBytes(), columnName.getBytes())); Object cmdDiscValue = cmd.getDiscriminatorValue(); if (cmd.getDiscriminatorStrategy() != DiscriminatorStrategy.NONE && !cmdDiscValue.equals(discValue))
String discVal = (String)cmd.getDiscriminatorValue(); // TODO Allow non-String String familyName = HBaseUtils.getFamilyNameForColumn(table.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR)); String qualifName = HBaseUtils.getQualifierNameForColumn(table.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR));
Object discVal = cmd.getDiscriminatorValue(); cypherString.append(" and (pc.").append(propName).append(" = \"").append(discVal).append("\")");
discrimMapping.setObject(ec, ps, new int[]{param[n]}, embCmd.getDiscriminatorValue());
query.put(rootTable.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR).getName(), rootCmd.getDiscriminatorValue());
EntityUtils.setEntityProperty(entity, dismd, EntityUtils.getDiscriminatorPropertyName(storeMgr.getIdentifierFactory(), dismd), op.getClassMetaData().getDiscriminatorValue());
dbObject.put(table.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR).getName(), cmd.getDiscriminatorValue());
SQLExpression discValExpr = factory.newLiteral(stmt, discriminatorMapping, targetCmd.getDiscriminatorValue()); stmt.whereAnd(discExpr.eq(discValExpr), false);
query.put(table.getSurrogateColumn(SurrogateColumnType.DISCRIMINATOR).getName(), cmd.getDiscriminatorValue());
propObj.setProperty(propName, cmd.getDiscriminatorValue());