if (!StringUtils.isWhitespace(fkmd.getFkDefinition())) return "<foreign-key name=\"" + fkmd.getName() + "\" definition=\"" + fkmd.getFkDefinition() + "\" definition-applies="+ fkmd.getFkDefinitionApplies() + "/>"; str.append(prefix).append("<foreign-key deferred=\"" + fkmd.isDeferred() + "\"\n"); str.append(prefix).append(" unique=\"" + fkmd.isUnique() + "\""); if (fkmd.getUpdateAction() != null) str.append("\n").append(prefix).append(" update-action=\"" + fkmd.getUpdateAction() + "\""); if (fkmd.getDeleteAction() != null) str.append("\n").append(prefix).append(" delete-action=\"" + fkmd.getDeleteAction() + "\""); if (fkmd.getTable() != null) str.append("\n").append(prefix).append(" table=\"" + fkmd.getTable() + "\""); if (fkmd.getName() != null) str.append("\n").append(prefix).append(" name=\"" + fkmd.getName() + "\""); String[] memberNames = fkmd.getMemberNames(); if (memberNames != null) ColumnMetaData[] columns = fkmd.getColumnMetaData(); if (columns != null) processExtensions(fkmd.getExtensions(), str, prefix, indent);
String deleteAction, String updateAction, String[] fields, Column[] columns) ForeignKeyMetaData fkmd = new ForeignKeyMetaData(); fkmd.setName(name); fkmd.setTable(table); fkmd.setUnique(unique); fkmd.setDeferred(deferred); fkmd.setDeleteAction(org.datanucleus.metadata.ForeignKeyAction.getForeignKeyAction(deleteAction)); fkmd.setUpdateAction(org.datanucleus.metadata.ForeignKeyAction.getForeignKeyAction(updateAction)); if (fields != null && fields.length > 0) fkmd.addMember(fields[j]); if (fkmd.getNumberOfMembers() == 0 && columns != null && columns.length > 0) fkmd.addColumn(colmd);
String deleteAction, String updateAction, String[] fields, Column[] columns) ForeignKeyMetaData fkmd = new ForeignKeyMetaData(name, table, unique, deferred, deleteAction, updateAction); if (fields != null && fields.length > 0) fkmd.addMember(fmd); if (fkmd.getNumberOfMembers() == 0 && columns != null && columns.length > 0) fkmd.addColumn(colmd);
if (fkmd.getFkDefinitionApplies() && fkmd.getFkDefinition() != null) foreignKeyDefinition = fkmd.getFkDefinition(); name = fkmd.getName(); refColumns = null; updateAction = null; if (fkmd.getName() != null) setName(fkmd.getName()); ForeignKeyAction deleteAction = fkmd.getDeleteAction(); if (deleteAction != null) ForeignKeyAction updateAction = fkmd.getUpdateAction(); if (updateAction != null) if (fkmd.isDeferred())
ForeignKey fk = new ForeignKey(dba, fkmd.isDeferred()); fk.setForMetaData(fkmd); if (fkmd.getFkDefinitionApplies()) if (fkmd.getTable() == null) return null; DatastoreIdentifier tableId = storeMgr.getIdentifierFactory().newTableIdentifier(fkmd.getTable()); ClassTable refTable = (ClassTable)storeMgr.getDatastoreClass(tableId); if (refTable == null) NucleusLogger.DATASTORE_SCHEMA.warn(Localiser.msg("058106", acmd.getFullClassName(), fkmd.getTable())); return null; ColumnMetaData[] colmds = fkmd.getColumnMetaData(); String[] memberNames = fkmd.getMemberNames(); if (colmds != null && colmds.length > 0) if (sourceCol == null) NucleusLogger.DATASTORE_SCHEMA.warn(Localiser.msg("058107", acmd.getFullClassName(), fkmd.getTable(), colmds[i].getName(), toString())); return null; acmd.getFullClassName(), fkmd.getTable(), "" + sourceCols.size(), "" + targetCols.size()));
public int getNumberOfColumns() { ColumnMetaData[] colmds = getInternal().getColumnMetaData(); return (colmds != null ? colmds.length : 0); }
values[j].table(), values[j].unique(), "" + values[j].deferred(), deleteAction, updateAction, values[j].members(), values[j].columns()); if (fkmd.getNumberOfColumns() == 0 && fkmd.getNumberOfMembers() == 0) if (fkmd.getNumberOfColumns() == 0 && fkmd.getNumberOfMembers() == 0) fkmd.setParent(cmd); cmd.addForeignKey(fkmd);
/** * Accessor for the expected foreign keys for this table. * @return The expected foreign keys. */ protected List<ForeignKey> getExpectedForeignKeys() { assertIsInitialized(); // Auto mode allows us to decide which FKs are needed as well as using what is in the users MetaData. boolean autoMode = false; if (storeMgr.getStringProperty(RDBMSPropertyNames.PROPERTY_RDBMS_CONSTRAINT_CREATE_MODE).equals("DataNucleus")) { autoMode = true; } // Add FK back to the primary table unless requested not to List<ForeignKey> foreignKeys = new ArrayList<>(); ForeignKeyMetaData fkmd = joinMetaData != null ? joinMetaData.getForeignKeyMetaData() : null; if (autoMode || (fkmd != null && fkmd.getDeleteAction() != ForeignKeyAction.NONE)) { ForeignKey fk = new ForeignKey(getIdMapping(), dba, primaryTable, fkmd != null && fkmd.isDeferred() ? true : false); if (fkmd != null && fkmd.getName() != null) { fk.setName(fkmd.getName()); } foreignKeys.add(0, fk); } return foreignKeys; }
if ((fkmd != null && (fkmd.getDeleteAction() != ForeignKeyAction.NONE || fkmd.getFkDefinitionApplies())) || autoMode) if (fkmd != null && fkmd.getName() != null) fk.setName(fkmd.getName());
joinFkmd = new ForeignKeyMetaData(fkName, null, null, null, null, null); joinmd.setForeignKeyMetaData(joinFkmd); joinFkmd.setName(fkName); joinmd.setForeignKeyMetaData(new ForeignKeyMetaData(null, null, null, null, null, null)); elemFkmd = new ForeignKeyMetaData(fkName, null, null, null, null, null); elemmd.setForeignKeyMetaData(elemFkmd); elemFkmd.setName(fkName); elemmd.setForeignKeyMetaData(new ForeignKeyMetaData(null, null, null, null, null, null)); keyFkmd = new ForeignKeyMetaData(fkName, null, null, null, null, null); keymd.setForeignKeyMetaData(keyFkmd); keyFkmd.setName(fkName); keymd.setForeignKeyMetaData(new ForeignKeyMetaData(null, null, null, null, null, null)); valueFkmd = new ForeignKeyMetaData(fkName, null, null, null, null, null); valuemd.setForeignKeyMetaData(valueFkmd); valueFkmd.setName(fkName); valuemd.setForeignKeyMetaData(new ForeignKeyMetaData(null, null, null, null, null, null));
if (supertable != null && (autoMode || (idFkmd != null && idFkmd.getDeleteAction() != ForeignKeyAction.NONE))) if (idFkmd != null && idFkmd.getName() != null) fk.setName(idFkmd.getName()); if ((fkmd != null && fkmd.getDeleteAction() != ForeignKeyAction.NONE) || autoMode)
public ForeignKeyAction getDeleteAction() { org.datanucleus.metadata.ForeignKeyAction fk = getInternal().getDeleteAction(); if (fk == org.datanucleus.metadata.ForeignKeyAction.CASCADE) { return ForeignKeyAction.CASCADE; } else if (fk == org.datanucleus.metadata.ForeignKeyAction.DEFAULT) { return ForeignKeyAction.DEFAULT; } else if (fk == org.datanucleus.metadata.ForeignKeyAction.NONE) { return ForeignKeyAction.NONE; } else if (fk == org.datanucleus.metadata.ForeignKeyAction.NULL) { return ForeignKeyAction.NULL; } else if (fk == org.datanucleus.metadata.ForeignKeyAction.RESTRICT) { return ForeignKeyAction.RESTRICT; } return ForeignKeyAction.UNSPECIFIED; }
public int getNumberOfMembers() { String[] internalMemberNames = getInternal().getMemberNames(); return (internalMemberNames != null ? internalMemberNames.length : 0); }
public String getName() { return getInternal().getName(); }
public ColumnMetadata[] getColumns() { ColumnMetaData[] internalColmds = getInternal().getColumnMetaData(); if (internalColmds == null) { return null; } ColumnMetadataImpl[] colmds = new ColumnMetadataImpl[internalColmds.length]; for (int i=0;i<colmds.length;i++) { colmds[i] = new ColumnMetadataImpl(internalColmds[i]); colmds[i].parent = this; } return colmds; }
String updateAction = JDOAnnotationUtils.getForeignKeyActionString(fk.updateAction()); ForeignKeyMetaData fkmd = JDOAnnotationUtils.getFKMetaData(fk.name(), fk.table(), fk.unique(), "" + fk.deferred(), deleteAction, updateAction, fk.members(), fk.columns()); if (fkmd.getNumberOfColumns() == 0 && fkmd.getNumberOfMembers() == 0) fkmd.setParent(cmd); if (fkmd.getNumberOfColumns() == 0 && fkmd.getNumberOfMembers() == 0) fkmd.setParent(cmd);
joinFkmd = new ForeignKeyMetaData(); joinFkmd.setName(fkName); joinmd.setForeignKeyMetaData(joinFkmd); joinFkmd.setName(fkName); joinmd.setForeignKeyMetaData(new ForeignKeyMetaData()); elemFkmd = new ForeignKeyMetaData(); elemFkmd.setName(fkName); elemmd.setForeignKeyMetaData(elemFkmd); elemFkmd.setName(fkName); elemmd.setForeignKeyMetaData(new ForeignKeyMetaData()); keyFkmd = new ForeignKeyMetaData(); keyFkmd.setName(fkName); keymd.setForeignKeyMetaData(keyFkmd); keyFkmd.setName(fkName); keymd.setForeignKeyMetaData(new ForeignKeyMetaData()); valueFkmd = new ForeignKeyMetaData(); valueFkmd.setName(fkName); valuemd.setForeignKeyMetaData(valueFkmd); valueFkmd.setName(fkName);
public ForeignKeyAction getDeleteAction() { ForeignKeyMetaData fkmd = getInternal().getForeignKeyMetaData(); if (fkmd != null) { org.datanucleus.metadata.ForeignKeyAction fk = fkmd.getDeleteAction(); if (fk == org.datanucleus.metadata.ForeignKeyAction.CASCADE) { return ForeignKeyAction.CASCADE; } else if (fk == org.datanucleus.metadata.ForeignKeyAction.DEFAULT) { return ForeignKeyAction.DEFAULT; } else if (fk == org.datanucleus.metadata.ForeignKeyAction.NONE) { return ForeignKeyAction.NONE; } else if (fk == org.datanucleus.metadata.ForeignKeyAction.NULL) { return ForeignKeyAction.NULL; } else if (fk == org.datanucleus.metadata.ForeignKeyAction.RESTRICT) { return ForeignKeyAction.RESTRICT; } } return ForeignKeyAction.UNSPECIFIED; }
public MemberMetadata[] getMembers() { String[] internalMemberNames = getInternal().getMemberNames(); if (internalMemberNames == null) { return null; } MemberMetadataImpl[] mmds = new MemberMetadataImpl[internalMemberNames.length]; for (int i=0;i<mmds.length;i++) { FieldMetaData fmd = new FieldMetaData(getInternal(), internalMemberNames[i]); mmds[i] = new FieldMetadataImpl(fmd); mmds[i].parent = this; } return mmds; }
fkmd.addMember(fmd.getName()); fkmd.addColumn(colmd); ForeignKeyMetaData fkmd = new ForeignKeyMetaData(); fkmd.setName(getAttr(attrs, "name")); fkmd.setTable(getAttr(attrs, "table")); fkmd.setUnique(getAttr(attrs, "unique")); fkmd.setDeferred(getAttr(attrs, "deferred")); fkmd.setDeleteAction(ForeignKeyAction.getForeignKeyAction(getAttr(attrs, "delete-action"))); fkmd.setUpdateAction(ForeignKeyAction.getForeignKeyAction(getAttr(attrs, "update-action"))); if (md instanceof AbstractClassMetaData)