A member of a {@link CatalogGroup}.  A member may be a {@link CatalogItem} or a
{@link CatalogGroup}.

@alias CatalogMember
@constructor
@abstract

@param {Terria} terria The Terria instance.
976945
function(terria) {
  if (!defined(terria)) {
    throw new DeveloperError("terria is required");
  }

  this._terria = terria;

  /**
   * Gets or sets the name of the item.  This property is observable.
   * @type {String}
   */
  this.name = "Unnamed Item";

  /**
   * Gets or sets the description of the item.  This property is observable.
   * @type {String}
   */
  this.description = "";

  /**
   * Gets or sets the array of section titles and contents for display in the layer info panel.
   * In future this may replace 'description' above - this list should not contain
   * sections named 'description' or 'Description' if the 'description' property
   * is also set as both will be displayed.
   * The object is of the form {name:string, content:string}.
   * Content will be rendered as Markdown with HTML.
   * This property is observable.
   * @type {Object[]}
   * @default []
   */
  this.info = [];

  /**
   * Gets or sets the array of section titles definining the display order of info sections.  If this property
   * is not defined, {@link DataPreviewSections}'s DEFAULT_SECTION_ORDER is used.  This property is observable.
   * @type {String[]}
   */
  this.infoSectionOrder = undefined;

  /**
   * Gets or sets a value indicating whether this member was supplied by the user rather than loaded from one of the
   * {@link Terria#initSources}.  User-supplied members must be serialized completely when, for example,
   * serializing enabled members for sharing.  This property is observable.
   * @type {Boolean}
   * @default true
   */
  this.isUserSupplied = true;

  /**
   * Gets or sets a value indicating whether this item is kept above other non-promoted items.
   * This property is observable.
   * @type {Boolean}
   * @default false
   */
  this.isPromoted = false;

  /**
   * Gets or sets a value indicating whether this item is hidden from the catalog.  This
   * property is observable.
   * @type {Boolean}
   * @default false
   */
  this.isHidden = false;

  /**
   * A message object that is presented to the user when an item or group is initially clicked
   * The object is of the form {title:string, content:string, key: string, confirmation: boolean, confirmText: string, width: number, height: number}.
   * This property is observable.
   * @type {Object}
   */
  this.initialMessage = undefined;

  /**
   * Gets or sets the cache duration to use for proxied URLs for this catalog member.  If undefined, proxied URLs are effectively cachable
   * forever.  The duration is expressed as a Varnish-like duration string, such as '1d' (one day) or '10000s' (ten thousand seconds).
   * @type {String}
   */
  this.cacheDuration = undefined;

  /**
   * Gets or sets whether or not this member should be forced to use a proxy.
   * This property is not observable.
   * @type {Boolean}
   */
  this.forceProxy = false;

  /**
   * Gets or sets the dictionary of custom item properties. This property is observable.
   * @type {Object}
   */
  this.customProperties = {};

  /**
   * An optional unique id for this member, that is stable across renames and moves.
   * Use uniqueId to get the canonical unique id for this CatalogMember, which is present even if there is no id.
   * @type {String}
   */
  this.id = undefined;

  /**
   * An array of all possible keys that can be used to match to this catalog member when specified in a share link -
   * used for maintaining backwards compatibility when adding or changing {@link CatalogMember#id}.
   *
   * @type {String[]}
   */
  this.shareKeys = undefined;

  /**
   * The parent {@link CatalogGroup} of this member.
   *
   * @type {CatalogGroup}
   */
  this.parent = undefined;

  /**
   * A short report to show on the now viewing tab.  This property is observable.
   * @type {String}
   */
  this.shortReport = undefined;

  /**
   * The list of collapsible sections of the short report.  Each element of the array is an object literal
   * with a `name` and `content` property.
   * @type {ShortReportSection[]}
   */
  this.shortReportSections = [];

  /*
   * Gets or sets a value indicating whether this data source is currently loading.  This property is observable.
   * @type {Boolean}
   */
  this.isLoading = false;

  /**
   * Whether this catalog member is waiting for a disclaimer to be accepted before showing itself.
   *
   * @type {boolean}
   */
  this.isWaitingForDisclaimer = false;

  /**
   * Indicates that the source of this data should be hidden from the UI (obviously this isn't super-secure as you
   * can just look at the network requests).
   *
   * @type {boolean}
   */
  this.hideSource = false;

  /**
   * The names of items in the {@link CatalogMember#info} array that contain details of the source of this
   * CatalogMember's data. This should be overridden by children of this class.
   *
   * @type {Array}
   * @private
   */
  this._sourceInfoItemNames = [];

  /**
   * The name of the item to show in the catalog, if different from `name`. Default undefined.
   * This property is observed.
   * @type {String}
   * @private
   */
  this._nameInCatalog = undefined;

  this._loadingPromise = undefined;

  /** Lookup table for _sourceInfoItemNames, access through {@link CatalogMember#_infoItemsWithSourceInfoLookup} */
  this._memoizedInfoItemsSourceLookup = undefined;

  knockout.track(this, [
    "name",
    "info",
    "infoSectionOrder",
    "description",
    "isUserSupplied",
    "isPromoted",
    "initialMessage",
    "isHidden",
    "cacheDuration",
    "customProperties",
    "shortReport",
    "shortReportSections",
    "isLoading",
    "isWaitingForDisclaimer",
    "_nameInCatalog"
  ]);

  knockout.defineProperty(this, "nameSortKey", {
    get: function() {
      var parts = this.nameInCatalog.split(/(\d+)/);
      return parts.map(function(part) {
        var parsed = parseInt(part, 10);
        if (parsed === parsed) {
          return parsed;
        } else {
          return part.trim().toLowerCase();
        }
      });
    }
  });

  /**
   * Gets or sets the name of this catalog member in the catalog. By default this is just `name`, but can be overridden.
   * @member {String} nameInCatalog
   * @memberOf CatalogMember.prototype
   */
  knockout.defineProperty(this, "nameInCatalog", {
    get: function() {
      return defaultValue(this._nameInCatalog, this.name);
    },
    set: function(value) {
      this._nameInCatalog = value;
    }
  });
}
588648
public final void setItsCatalog(final CatalogGs pCatalog) {
    this.itsCatalog = pCatalog;
    if (this.itsId == null) {
      this.itsId = new SubcatalogsCatalogsGsId();
    }
    this.itsId.setItsCatalog(this.itsCatalog);
  }
927107
function CkanCatalogItem(terria) {
  CatalogItem.call(this, terria);

  /**
   * Gets or sets the ID of the CKAN resource referred to by this catalog item.  Either this property
   * is {@see CkanCatalogItem#datasetId} must be specified.  If {@see CkanCatalogItem#datasetId} is
   * specified too, and this resource is not found, _any_ supported resource may be used instead,
   * depending on the value of {@see CkanCatalogItem#allowAnyResourceIfResourceIdNotFound}.
   * @type {String}
   */
  this.resourceId = undefined;

  /**
   * Gets or sets the ID of the CKAN dataset referred to by this catalog item.  Either this property
   * is {@see CkanCatalogItem#resourceId} must be specified.  The first resource of a supported type
   * in this dataset will be used.
   * @type {String}
   */
  this.datasetId = undefined;

  /**
   * Gets or sets a value indicating whether any supported resource may be used if both {@see CkanCatalogItem#datasetId} and
   * {@see CkanCatalogItem#resourceId} are specified and the {@see CkanCatalogItem#resourceId} is not found.
   * @type {Boolean}
   * @default true
   */
  this.allowAnyResourceIfResourceIdNotFound = true;

  /**
   * Gets or sets a value indicating whether this may be a WMS resource.
   * @type {Boolean}
   * @default true
   */
  this.allowWms = true;

  /**
   * Gets or sets a regular expression that, when it matches a resource's format, indicates that the resource is a WMS resource.
   * @type {RegExp}
   */
  this.wmsResourceFormat = /^wms$/i;

  /**
   * Gets or sets a value indicating whether this may be a WFS resource.
   * @type {Boolean}
   * @default true
   */
  this.allowWfs = true;

  /**
   * Gets or sets a regular expression that, when it matches a resource's format, indicates that the resource is a WFS resource.
   * @type {RegExp}
   */
  this.wfsResourceFormat = /^wfs$/i;

  /**
   * Gets or sets a value indicating whether this may be a KML resource.
   * @type {Boolean}
   * @default true
   */
  this.allowKml = true;

  /**
   * Gets or sets a regular expression that, when it matches a resource's format, indicates that the resource is a KML resource.
   * @type {RegExp}
   */
  this.kmlResourceFormat = /^kml$/i;

  /**
   * Gets or sets a value indicating whether this may be a CSV resource.
   * @type {Boolean}
   * @default true
   */
  this.allowCsv = true;

  /**
   * Gets or sets a regular expression that, when it matches a resource's format, indicates that the resource is a CSV resource.
   * @type {RegExp}
   */
  this.csvResourceFormat = /^csv-geo-/i;

  /**
   * Gets or sets a value indicating whether this may be an Esri MapServer resource.
   * @type {Boolean}
   * @default true
   */
  this.allowEsriMapServer = true;

  /**
   * Gets or sets a value indicating whether this may be an Esri FeatureServer resource.
   * @type {Boolean}
   * @default true
   */
  this.allowEsriFeatureServer = true;

  /**
   * Gets or sets a regular expression that, when it matches a resource's format, indicates that the resource is an Esri MapServer resource.
   * A valid MapServer resource must also have `MapServer` in its URL.
   * @type {RegExp}
   */
  this.esriMapServerResourceFormat = /^esri rest$/i;

  /**
   * Gets or sets a regular expression that, when it matches a resource's format, indicates that the resource is an Esri
   * MapServer or FeatureServer resource.  A valid FeatureServer resource must also have `FeatureServer` in its URL.
   * @type {RegExp}
   */
  this.esriFeatureServerResourceFormat = /^esri rest$/i;

  /**
   * Gets or sets a value indicating whether this may be a GeoJSON resource.
   * @type {Boolean}
   * @default true
   */
  this.allowGeoJson = true;

  /**
   * Gets or sets a regular expression that, when it matches a resource's format, indicates that the resource is a GeoJSON resource.
   * @type {RegExp}
   */
  this.geoJsonResourceFormat = /^geojson$/i;

  /**
   * Gets or sets a value indicating whether this may be a CZML resource.
   * @type {Boolean}
   * @default true
   */
  this.allowCzml = true;

  /**
   * Gets or sets a regular expression that, when it matches a resource's format, indicates that the resource is a CZML resource.
   * @type {RegExp}
   */
  this.czmlResourceFormat = /^czml$/i;

  /**
   * Gets or sets a hash of properties that will be set on the item created from the CKAN resource.
   * For example, { "treat404AsError": false }
   * @type {Object}
   */
  this.itemProperties = undefined;
}
1069056
@Override
    public IEntityGroupStore newGroupStore(ComponentGroupServiceDescriptor svcDescriptor)
            throws GroupsException {
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("Creating New Grouper IEntityGroupStore");
        }
        return getGroupStore();
    }
964768
public static void apply(Annotated member, Schema property) {
        if (member.hasAnnotation(XmlElementWrapper.class) || member.hasAnnotation(XmlElement.class)) {
            applyElement(member, property);
        } else if (member.hasAnnotation(XmlAttribute.class) && isAttributeAllowed(property)) {
            applyAttribute(member, property);
        }
    }
328052
function UMLEvent() {
        UMLModelElement.apply(this, arguments);

        /** @member {string} */
        this.kind = EK_ANYRECEIVE;

        /** @member {string} */
        this.value = '';

        /** @member {string} */
        this.expression = '';

        /** @member {UMLOperation} */
        this.targetOperation = null;

        /** @member {UMLSignal} */
        this.targetSignal = null;
    }
436409
private void join(ParserRuleContext ctx, Class<? extends Join> type)
  {
    QueryNode left = relationChain.get(relationIdx);
    QueryNode right = relationChain.get(relationIdx+1);

    try
    {
      Constructor<? extends Join> c = type.getConstructor(QueryNode.class);
      Join newJoin = c.newInstance(right);
      left.addOutgoingJoin(addParsedLocation(ctx, newJoin));
      
    }
    catch (NoSuchMethodException ex)
    {
      log.error(null, ex);
    }
    catch (InstantiationException ex)
    {
      log.error(null, ex);
    }
    catch (IllegalAccessException ex)
    {
      log.error(null, ex);
    }
    catch (InvocationTargetException ex)
    {
      log.error(null, ex);
    }

  }
1347872
function Catalog(consul) {
  this.consul = consul;
  this.connect = new Catalog.Connect(consul);
  this.node = new Catalog.Node(consul);
  this.service = new Catalog.Service(consul);
}
1042666
@Override
    public Ref memberRef(Context cx, Object elem, int memberTypeFlags) {
        boolean attribute = (memberTypeFlags & Node.ATTRIBUTE_FLAG) != 0;
        boolean descendants = (memberTypeFlags & Node.DESCENDANTS_FLAG) != 0;
        if (!attribute && !descendants) {
            // Code generation would use ecma(Get|Has|Delete|Set) for
            // normal name identifiers so one ATTRIBUTE_FLAG
            // or DESCENDANTS_FLAG has to be set
            throw Kit.codeBug();
        }
        XmlNode.QName qname = lib.toNodeQName(cx, elem, attribute);
        XMLName rv = XMLName.create(qname, attribute, descendants);
        rv.initXMLObject(this);
        return rv;
    }
1365271
function(terria) {
  ImageryLayerCatalogItem.call(this, terria);

  /**
   * Gets or sets the outline color of the features, specified as a CSS color string.
   * @type {String}
   * @default '#000000'
   */
  this.lineColor = "#000000";

  /**
   * Gets or sets the fill color of the features, specified as a CSS color string.
   * @type {String}
   * @default 'rgba(0,0,0,0)'
   */
  this.fillColor = "rgba(0,0,0,0)";

  /**
   * Gets or sets the name of the layer to use the Mapbox vector tiles.
   * @type {String}
   */
  this.layer = undefined;

  /**
   * Gets or sets the name of the property that is a unique ID for features.
   * @type {String}
   * @default 'FID'
   */
  this.idProperty = "FID";

  /**
   * Gets or sets the name of the property from which to obtain the name of features.
   * @type {String}
   */
  this.nameProperty = undefined;

  /**
   * Gets or sets the maximum zoom level for which tile files exist.
   * @type {Number}
   * @default 12
   */
  this.maximumNativeZoom = 12;

  /**
   * Gets or sets the maximum zoom level that can be displayed by using the data in the
   * {@link MapboxVectorTileCatalogItem#maximumNativeZoom} tiles.
   * @type {Number}
   * @default 28
   */
  this.maximumZoom = 28;

  /**
   * Gets or sets the minimum zoom level for which tile files exist.
   * @type {Number}
   * @default 0
   */
  this.minimumZoom = 0;
  this._legendUrl = undefined;

  knockout.track(this, [
    "lineColor",
    "fillColor",
    "layer",
    "idProperty",
    "nameProperty",
    "_legendUrl"
  ]);

  overrideProperty(this, "legendUrl", {
    get: function() {
      if (defined(this._legendUrl)) {
        return this._legendUrl;
      } else {
        return new Legend({
          items: [
            {
              color: this.fillColor,
              lineColor: this.lineColor,
              title: this.name
            }
          ]
        }).getLegendUrl();
      }
    },
    set: function(value) {
      this._legendUrl = value;
    }
  });
}
546786
function (member) {
        _gpfAsserts({
            "Expected a _GpfClassDefMember": member instanceof _GpfClassDefMember,
            "Member is already assigned to a class": null === member._classDef
        });
        this._checkMemberBeforeAdd(member);
        this._members[member.getName()] = member;
        member._classDef = this;
        return this;
    }
1235378
function(terria) {
  TerrainCatalogItem.call(this, terria);

  /**
   * Gets or sets the ID of the Cesium Ion asset to access. If this property is set, the {@link CesiumTerrainCatalogItem#url}
   * property is ignored.
   * @type {Number}
   */
  this.ionAssetId = undefined;

  /**
   * Gets or sets the Cesium Ion access token to use to access the terrain. If not specified, the token specified
   * using the `cesiumIonAccessToken` property in `config.json` is used. This property is ignored if
   * {@link CesiumTerrainCatalogItem#ionAssetId} is not set.
   * @type {String}
   */
  this.ionAccessToken = undefined;

  /**
   * Gets or sets the Cesium Ion access token to use to access the terrain. If not specified, the default Ion
   * server, `https://api.cesium.com/`, is used. This property is ignored if
   * {@link CesiumTerrainCatalogItem#ionAssetId} is not set.
   * @type {String}
   */
  this.ionServer = undefined;
}
1204972
function (member, memberValue, visibility) {
        if (_GPF_VISIBILITY_STATIC === visibility) {
            _gpfAssert(undefined === this._Constructor[member], "Static members can't be overridden");
            this._Constructor[member] = memberValue;
        } else if ("constructor" === member) {
            this._addConstructor(memberValue, visibility);
        } else {
            this._addNonStaticMember(member, memberValue, visibility);
        }
    }
371324
public <T> PropertyKey<T> getDirectAccessReferenceGroup(String name, Class<T> type) {

		if (!propertyKeys.containsKey(name)) {
			throw new IllegalArgumentException("ReferenceGroup " + dbName + " does not contain grouped property " + name + "!");
		}

		return new GenericProperty(propertyKeys.get(name).dbName());
	}
1326071
@Override
    public IEntityGroupStore newGroupStore(ComponentGroupServiceDescriptor svcDescriptor)
            throws GroupsException {
        FileSystemGroupStore fsGroupStore = (FileSystemGroupStore) getGroupStore();
        String groupsRoot = (String) svcDescriptor.get("groupsRoot");
        if (groupsRoot != null) {
            fsGroupStore.setGroupsRootPath(groupsRoot);
        }
        return fsGroupStore;
    }
1033029
private void enterMember(ClassSymbol c, Symbol sym) {
        // Synthetic members are not entered -- reason lost to history (optimization?).
        // Lambda methods must be entered because they may have inner classes (which reference them)
        if ((sym.flags_field & (SYNTHETIC|BRIDGE)) != SYNTHETIC || sym.name.startsWith(names.lambda))
            c.members_field.enter(sym);
    }
872938
function ERDColumn() {
        ERDElement.apply(this, arguments);

        /** @member {string} */
        this.type = '';

        /** @member {string} */
        this.length = '';

        /** @member {boolean} */
        this.primaryKey = false;

        /** @member {boolean} */
        this.foreignKey = false;

        /** @member {ERDColumn} */
        this.referenceTo = null;

        /** @member {boolean} */
        this.nullable = false;

        /** @member {boolean} */
        this.unique = false;
    }