public ICFLibAnyObj getNamedObject(String objName) {
   String nextName;
   String remainingName;
   ICFLibAnyObj subObj = null;
   ICFLibAnyObj retObj;
   int nextDot = objName.indexOf('.');
   if (nextDot >= 0) {
     nextName = objName.substring(0, nextDot);
     remainingName = objName.substring(nextDot + 1);
   } else {
     nextName = objName;
     remainingName = null;
   }
   if (subObj == null) {
     subObj =
         ((ICFCrmSchemaObj) getSchema())
             .getSecDeviceTableObj()
             .readSecDeviceByIdIdx(getRequiredSecUserId(), nextName, false);
   }
   if (remainingName == null) {
     retObj = subObj;
   } else if (subObj == null) {
     retObj = null;
   } else {
     retObj = subObj.getNamedObject(remainingName);
   }
   return (retObj);
 }
 public ICFLibAnyObj getObjQualifier(Class qualifyingClass) {
   ICFLibAnyObj container = this;
   if (qualifyingClass != null) {
     while (container != null) {
       if (container instanceof ICFSecurityClusterObj) {
         break;
       } else if (container instanceof ICFSecurityTenantObj) {
         break;
       } else if (qualifyingClass.isInstance(container)) {
         break;
       }
       container = container.getObjScope();
     }
   } else {
     while (container != null) {
       if (container instanceof ICFSecurityClusterObj) {
         break;
       } else if (container instanceof ICFSecurityTenantObj) {
         break;
       }
       container = container.getObjScope();
     }
   }
   return (container);
 }
 public ICFLibAnyObj getNamedObject(Class qualifyingClass, String objName) {
   ICFLibAnyObj topContainer = getObjQualifier(qualifyingClass);
   if (topContainer == null) {
     return (null);
   }
   ICFLibAnyObj namedObject = topContainer.getNamedObject(objName);
   return (namedObject);
 }
 public String getObjFullName() {
   String fullName = getObjName();
   ICFLibAnyObj container = getObjScope();
   String containerName;
   while (container != null) {
     if (container instanceof ICFSecurityClusterObj) {
       container = null;
     } else if (container instanceof ICFSecurityTenantObj) {
       container = null;
     } else {
       containerName = container.getObjName();
       fullName = containerName + "." + fullName;
       container = container.getObjScope();
     }
   }
   return (fullName);
 }
 public ICFLibAnyObj getNamedObject(String objName) {
   String nextName;
   String remainingName;
   ICFLibAnyObj subObj = null;
   ICFLibAnyObj retObj;
   int nextDot = objName.indexOf('.');
   if (nextDot >= 0) {
     nextName = objName.substring(0, nextDot);
     remainingName = objName.substring(nextDot + 1);
   } else {
     nextName = objName;
     remainingName = null;
   }
   if (subObj == null) {
     subObj =
         ((ICFInternetSchemaObj) getSchema())
             .getHostNodeTableObj()
             .readHostNodeByHostNameIdx(getRequiredId(), nextName, false);
   }
   if (subObj == null) {
     subObj =
         ((ICFInternetSchemaObj) getSchema())
             .getTenantTableObj()
             .readTenantByUNameIdx(getRequiredId(), nextName, false);
   }
   if (subObj == null) {
     subObj =
         ((ICFInternetSchemaObj) getSchema())
             .getSecAppTableObj()
             .readSecAppByUJEEMountIdx(getRequiredId(), nextName, false);
   }
   if (subObj == null) {
     subObj =
         ((ICFInternetSchemaObj) getSchema())
             .getSecGroupTableObj()
             .readSecGroupByUNameIdx(getRequiredId(), nextName, false);
   }
   if (remainingName == null) {
     retObj = subObj;
   } else if (subObj == null) {
     retObj = null;
   } else {
     retObj = subObj.getNamedObject(remainingName);
   }
   return (retObj);
 }
 public ICFLibAnyObj getNamedObject(String objName) {
   String nextName;
   String remainingName;
   ICFLibAnyObj subObj = null;
   ICFLibAnyObj retObj;
   int nextDot = objName.indexOf('.');
   if (nextDot >= 0) {
     nextName = objName.substring(0, nextDot);
     remainingName = objName.substring(nextDot + 1);
   } else {
     nextName = objName;
     remainingName = null;
   }
   if (remainingName == null) {
     retObj = subObj;
   } else if (subObj == null) {
     retObj = null;
   } else {
     retObj = subObj.getNamedObject(remainingName);
   }
   return (retObj);
 }
  /**
   * The core evaluation of ColumnInOwnerLookupRelation is also to determine if an index definition
   * is in an owner relation.
   *
   * <p>WORKING: Yes, I know. This should be a business method instead of copying the code in
   * ICFBamIndexObj and MSIsaGenBindColumnInOwnerLookupRelation.
   *
   * @param genDef to be considered
   * @return True if the column participates in an owner relation.
   */
  public static Boolean isColumnInContainerOrNamedLookupRelation(ICFLibAnyObj genDef) {

    ICFLibAnyObj focusDef;
    ICFBamTableObj tableDef;
    final String S_ProcName = "isColumnInContainerOrNamedLookupRelation";

    if (genDef instanceof ICFBamAtomObj) {
      ICFBamAtomObj atomDef = (ICFBamAtomObj) genDef;
      ICFLibAnyObj atomScopeDef = atomDef.getObjScope();
      tableDef = (ICFBamTableObj) atomScopeDef;
      focusDef = genDef;
    } else if (genDef instanceof ICFBamTableColObj) {
      ICFBamTableColObj tableColDef = (ICFBamTableColObj) genDef;
      ICFLibAnyObj tableColScopeDef = tableColDef.getObjScope();
      tableDef = (ICFBamTableObj) tableColScopeDef;
      focusDef = genDef;
    } else if (genDef instanceof ICFBamIndexColObj) {
      ICFBamIndexColObj indexColDef = (ICFBamIndexColObj) genDef;
      focusDef = indexColDef.getRequiredLookupColumn();
      if (focusDef instanceof ICFBamAtomObj) {
        tableDef = (ICFBamTableObj) ((ICFBamAtomObj) focusDef).getObjScope();
      } else if (focusDef instanceof ICFBamTableColObj) {
        tableDef = (ICFBamTableObj) ((ICFBamTableColObj) focusDef).getObjScope();
      } else {
        throw CFLib.getDefaultExceptionFactory()
            .newUnsupportedClassException(
                MSSBamCFGenBindColumnInContainerOrNamedLookupRelation.class,
                S_ProcName,
                "genContext.GenDef.LookupColumn",
                genDef,
                "ICFBamAtomObj, ICFBamTableColObj");
      }
    } else if (genDef instanceof ICFBamRelationColObj) {
      ICFBamRelationColObj relColDef = (ICFBamRelationColObj) genDef;
      ICFLibAnyObj columnDef = relColDef.getRequiredLookupFromCol();
      if (columnDef instanceof ICFBamAtomObj) {
        focusDef = columnDef;
        tableDef = (ICFBamTableObj) columnDef.getObjScope();
      } else if (columnDef instanceof ICFBamTableColObj) {
        focusDef = columnDef;
        tableDef = (ICFBamTableObj) columnDef.getObjScope();
      } else {
        throw CFLib.getDefaultExceptionFactory()
            .newUnsupportedClassException(
                MSSBamCFGenBindColumnInContainerOrNamedLookupRelation.class,
                S_ProcName,
                "genContext.GenDef.FromCol",
                genDef,
                "ICFBamAtomObj, ICFBamTableColObj");
      }
    } else {
      throw CFLib.getDefaultExceptionFactory()
          .newUnsupportedClassException(
              MSSBamCFGenBindColumnInContainerOrNamedLookupRelation.class,
              S_ProcName,
              "genContext.GenDef",
              genDef,
              "ICFBamAtomObj, ICFBamTableColObj, ICFBamIndexColObj, ICFBamRelationColObj");
    }

    List<ICFBamRelationObj> containerNamedLookupRelations =
        MSSBamCFTableObj.getOwnerContainerNamedLookupChainRelations(tableDef);
    if ((containerNamedLookupRelations == null)
        || ((containerNamedLookupRelations != null)
            && (containerNamedLookupRelations.size() == 0))) {
      return (false);
    }

    ListIterator<ICFBamRelationObj> ownerEnumerator = containerNamedLookupRelations.listIterator();

    ICFBamRelationObj ownerRelation;
    ICFBamRelationColObj ownerRelationCol;
    ICFBamIndexColObj indexCol;
    Iterator<ICFBamRelationColObj> ownerRelationCols;

    while (ownerEnumerator.hasNext()) {

      ownerRelation = ownerEnumerator.next();
      ownerRelationCols = ownerRelation.getOptionalComponentsColumns().iterator();
      while (ownerRelationCols.hasNext()) {
        ownerRelationCol = ownerRelationCols.next();
        indexCol = ownerRelationCol.getRequiredLookupFromCol();
        if (indexCol.getRequiredLookupColumn() == focusDef) {
          return (true);
        }
      }
    }

    return (false);
  }